尝试将nvarchar列转换为datetime时出现以下错误。
Select *
from table 1
where
convert(datetime, col1) >= '2018-08-29 00:00:00.000'
错误消息
将varchar数据类型转换为datetime数据类型会导致超出范围的值。
Col1是NVARCHAR列(我无法控制此数据类型,因此无法更改它)
我已经看过一些charindex的示例,但是似乎无法使其正常工作,对于使代码正确运行的任何帮助,我们深表感谢。
UPDATE-'2018-08-29 00:00:00.000'是需要保留的datetime列,以便执行where子句。
答案 0 :(得分:2)
使用try_convert()
:
Select *
from table 1
where try_convert(datetime, col1) >= '2018-08-29' -- time is not necessary
要查找引起问题的值:
select col1
from t
where try_convert(datetime, col1) is null and col1 is not null;
注意:转换可能需要格式参数。不过,最后,您应该修复数据以为col1
使用正确的类型。
答案 1 :(得分:0)
您可以在查询开始之前定义SET DATEFORMAT YMD
。
看看下面的查询
SET DATEFORMAT YMD
Select *
from table 1
where
convert(datetime, col1) >= '2018-08-29 00:00:00.000'