2015-07-11 60 views
0

當前正在使用SQL Server 2008.爲了嘗試調試某些正在處理的錯誤日期數據,下面的代碼是使用錯誤數據的示例編寫的。SQL Server - 選擇YEAR錯誤

SELECT ISDATE('10-22-002') 
SELECT YEAR('10-22-002') 

運行數據庫A上的語句,結果爲:'1'和'2002'。

運行數據庫B上的語句時,結果爲:'1'並出現錯誤。

在運行語句之前,所有會話的日期格式都是MDY。從字符串變換日期時間時

消息241,級別16,狀態1
轉換失敗。

我能找到的一切都表示日期格式在服務器或會話級別設置。在這個數據庫中是否有一個設置?

+0

兩者是相同的版本?是不同的...通過執行這兩個語句第一個給1作爲結果第二個錯誤,如果你有2002年,它會給 – mohan111

回答

1

您需要將'10-22-002'作爲datetime進行投射。

SELECT YEAR(cast('10-22-002' as datetime)) 
+0

超級 - 像一個魅力工作。對於爲什麼SELECT YEAR函數在Management Studio中工作而不是另一個DB,我仍然感到困惑。 – Galactic