2016-08-23 66 views
-1
select 
    DateDiff(Day, convert(datetime,'2/1/'+cast(Year(BeginDate) as varchar)), 
    convert(datetime,'2/29/'+cast(Year(BeginDate) as varchar))) 
from [table] 
where (begindate is not null and enddate is not null) 

我跑入誤差一個char數據類型到datetime數據類型的轉換導致外的範圍內的日期時間value.sql

一個char數據類型的所述的轉化率日期時間數據類型導致 處於超出範圍的日期時間值。 BEGINDATE的

例子:2014年2月12日00:00:結束日期的00.000 例如:2014年2月16日00:00:00.000

請幫點我朝着正確的方向,謝謝。

+0

那麼,如果一個'BeginDate'的例子是'2014-02-12',那麼你如何期待''2/29/2014''被轉換爲datetime ?. 2014年是**不是**閏年 – Lamak

+0

以及我非常感謝,因爲捕捉到了這一點。 – user3083228

回答

-1

此錯誤是由於不同的語言在SQL Server中表示和解析日期的方式造成的。如果英語被設置爲您的默認語言,則SQL Server需要MM/DD/YYYYformat中的日期。其他語言可能需要DD/MM/YYYY格式。如果提供的內容與SQL Server期望的內容不匹配,SQL Server將拋出此錯誤。

+0

Plz。考慮在你的答案中發表一個例子 – Trimax

相關問題