将char数据类型转换为datetime数据类型会导致datetime value.sql超出范围

时间:2016-08-23 16:22:59

标签: sql datediff

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数据类型的转换   在超出范围的日期时间值。

Begindate示例:2014-02-12 00:00:00.000 enddate的例子:2014-02-16 00:00:00.000

请指点我指向正确的方向,谢谢。

1 个答案:

答案 0 :(得分:-1)

此错误是由于不同语言在SQL Server中表示和解析日期的方式。如果将英语设置为默认语言,则SQL Server需要MM / DD / YYYYformat中的日期。其他语言可能需要DD / MM / YYYY格式。如果提供的内容与SQL Server期望的内容不匹配,SQL Server将抛出此错误。