我正在尝试以下查询,并始终收到ResCreation date的错误,我使用CAST认为Rescreation date可能包含一些错误字段。不确定哪个字段是错误的。
SELECT TOP(5)
[PCode]
,[ADate]
,[DDate]
,[ResCreationDate]
,[CancelDate]
FROM
[ResDomain]
WHERE
CAST(ResCreationDate AS DATE) >= '2018-01-01'
我得到的错误:
第241级状态1线2消息
从字符串转换日期和/或时间时转换失败。
这是示例数据输出:
PCode ADate DDate ResCreationDate CancelDate
FL7112 2018-07-30 00:00:00 2018-08-03 00:00:00 2018-05-29 16:34:30 2018-07-25 12:35:00
MT2091 2018-05-03 00:00:00 2018-05-04 00:00:00 2018-05-02 21:58:27 NULL
2075 2018-03-31 00:00:00 2018-04-01 00:00:00 2018-04-01 00:18:40 NULL
2012 2018-07-07 00:00:00 2018-07-08 00:00:00 2018-06-16 17:38:29 2018-06-30 03:20:00
2587 2018-06-30 00:00:00 2018-07-01 00:00:00 2018-06-30 11:18:10 NULL
不确定我是否应该尝试其他数据类型,我在where
子句中也使用了'2018-01-01 00:00:00',但没有用。
答案 0 :(得分:1)
使用try_cast()
:
SELECT TOP (5) [PCode], [ADate], [DDate], [ResCreationDate]
FROM [ResDomain]
WHERE TRY_CAST(ResCreationDate as Date) >= '2018-01-01';
或者,更好的是,找到不良数据并进行修复!
SELECT ResCreationDate
FROM ResDomain
WHERE TRY_CONVERT(Date, ResCreationDate) IS NULL;