一个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
请帮点我朝着正确的方向,谢谢。
答
此错误是由于不同的语言在SQL Server中表示和解析日期的方式造成的。如果英语被设置为您的默认语言,则SQL Server需要MM/DD/YYYYformat中的日期。其他语言可能需要DD/MM/YYYY格式。如果提供的内容与SQL Server期望的内容不匹配,SQL Server将抛出此错误。
+0
Plz。考虑在你的答案中发表一个例子 – Trimax
那么,如果一个'BeginDate'的例子是'2014-02-12',那么你如何期待''2/29/2014''被转换为datetime ?. 2014年是**不是**闰年 – Lamak
以及我非常感谢,因为捕捉到了这一点。 – user3083228