我有一个查询,我需要检查一个日期是否小于或等于另一个日期。日期以这种格式作为字符串存储在表中2/1/2020
我的测试服务器上的 SQL Server 版本是 13.0,下面的查询工作正常,但暂存和生产版本都是 11.0.7。下面的查询是我迄今为止尝试过的,但出现错误
“从字符串转换日期和/或时间时转换失败。”。
编写此查询以使其适用于所有 SQL 服务器的正确方法是什么?
SELECT TrackingNumber
FROM CarrierTrackingData
WHERE (SUBSTRING(Status, 1, 9) = 'Delivered') AND (CONVERT(date, CAST(DeliveryDate AS date), 23) <= CONVERT(date, CAST(InStoreDate AS date), 23))
GROUP BY TrackingNumber```
您需要101
世纪mm/dd/yyyy
转换为日期格式:
WHERE ( SUBSTRING(Status, 1, 9) = 'Delivered' AND
CONVERT(date, DeliveryDate , 101) <= CONVERT(date, InStoreDate , 101)
);
注意:您不需要使用,CAST()
因为CONVERT()
Century 将为您进行对话。
编辑:您可以使用TRY_CONVERT()
以下方法检查可能的日期格式:
SELECT DeliveryDate,
TRY_CONVERT(DATE, DeliveryDate, 101) AS Possible_DeliveryDate,
InStoreDate,
TRY_CONVERT(DATE, InStoreDate , 101) AS Possible_InStoreDate
FROM table t;
TRY_CONVERT()
将返回NULL
对话失败的地方。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句