尝试转换日期字段,转换时会导致错误

时间:2018-09-10 21:43:07

标签: sql sql-server

我正在尝试以下查询,并始终收到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',但没有用。

1 个答案:

答案 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;