-1

尝试将 nvarchar 列转换为日期时间时出现以下错误。

Select *
from table 1
where
convert(datetime, col1) >= '2018-08-29 00:00:00.000'

错误信息

将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。

Col1 是 NVARCHAR 列(我无法控制此数据类型,因此无法更改)

我已经看到了一些 charindex 的示例,但似乎无法让它工作,非常感谢任何帮助让代码正确工作的帮助。

更新 - '2018-08-29 00:00:00.000' 是一个日期时间列,需要保留它以便执行 where 子句。

4

2 回答 2

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.

于 2018-09-18T13:00:32.653 回答
0

您可以SET DATEFORMAT YMD在查询开始之前定义。看看下面的查询,

SET DATEFORMAT YMD
Select *
from table 1
where
convert(datetime, col1) >= '2018-08-29 00:00:00.000'
于 2018-09-18T13:26:54.110 回答