一个char数据类型到datetime数据类型的转换导致外的范围内的日期时间value.sql

问题描述:

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

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

+0

Plz。考虑在你的答案中发表一个例子 – Trimax