我有这种日期时间表:2010-09-16 00:32:41.960'
CreatedDate列。
我需要执行查询... [CreatedDate]> ='2010-09-16 00:32:41.960' 但那只是给了我
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
正确的语法是什么,自从我最后一次完成SQL以来已经有一段时间了。 提前谢谢。
答案 0 :(得分:3)
使用明确的日期时间格式,以便SQL Server不必猜测如何转换它:
where [CreatedDate] >= '2010-09-16T00:32:41.960'
遗憾的是,根据您的区域设置,它可能会使用空格分隔符(而不是T
)将表单解释为YYYY-DD-MM hh:mm:ss
。这给出了一个超出范围月份的例子(月份早期的错误结果,除了白天=月份)
我通常将安全格式列为:
YYYYMMDD
YYYY-MM-DD'T'hh:mm:ss
YYYY-MM-DD'T'hh:mm:ss.mil
如果转换为datetime2
或date
,还有一些其他格式现在是安全的,但我记不住了,上面的内容通常就足够了。
另一种选择是在使用这些日期文字之前运行set dateformat
语句:
set dateformat mdy
select MONTH('2010-09-16 00:32:41.960')
结果为9
,而您所体验的内容可以通过以下方式复制:
set dateformat dmy
select MONTH('2010-09-16 00:32:41.960')
答案 1 :(得分:0)
尝试:
where [CreatedDate] >= CONVERT(datetime,'2010-09-16 00:32:41.960');