2013-03-27 100 views
1

我已經寫在該日期從表被轉換爲一個char數據類型到datetime數據類型的轉換導致在SQL Server外的範圍日期時間值2005

convert(varchar, date, 103) 

的圖並採取別名DATE1,然後我寫了查詢,如下所示:

select DATE1 
from date_demo 
WHERE MONTH(DATE1) = '12' 

我想用一個月=「12月份是12

我得到一個錯誤只檢索特定的記錄:

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

這是SQL Server 2005中請幫我

+2

的長度,你爲什麼不使用在where子句中的基礎日期列而不是顯式轉換爲字符串,然後隱式返回datetime?你想讓你的服務器哭嗎? – BlackICE 2013-03-27 05:48:42

回答

2

大衛建議,你應該使用日期列,而不是轉換爲字符串,然後回datetime列。

然而,當你將其轉換回日期時間,你需要另外指定Date Time Style

select DATE1 from date_demo 
WHERE MONTH(convert(datetime,DATE1,103))= '12' 

你需要指定VARCHAR數據類型閱讀本artcile bad habits to kick declaring varchar without length

+0

這不是什麼錯誤指向,並且SQL可以做從字符串到int的轉換就好了 – BlackICE 2013-03-27 05:49:16

+0

我的錯誤。更新了答案 – praveen 2013-03-27 06:08:38

相關問題