我尝试将nvarchar列转换为datetime时收到以下错误。
Select *
from table 1
where
convert(datetime, col1) >= '2018-08-29 00:00:00.000'
错误信息
将varchar数据类型转换为日期时间数据类型会导致超出范围的值。
Col1是一个NVARCHAR列(我无法控制此数据类型,所以我无法更改它)
我已经看到了一些charindex的例子,但似乎无法让它工作,任何帮助获得正确的代码工作非常感谢。
更新 - '2018-08-29 00:00:00.000'是一个日期时间列,需要保留为了执行where子句。
使用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
的正确类型。
您可以在查询开始之前定义SET DATEFORMAT YMD
。看看下面的查询,
SET DATEFORMAT YMD
Select *
from table 1
where
convert(datetime, col1) >= '2018-08-29 00:00:00.000'