SQL日期添加到具有英国和美国格式数据的列

时间:2018-10-12 01:18:15

标签: sql datetime

我有一列存储日期时间数据。但是数据可以是美国格式,英国格式,也可以是一些垃圾数据。我想尝试将DataAdd添加到此列。当数据为英国或美国格式时,我将为DateAdd +1,否则将保留垃圾数据。


之前=====之后

1/30/2018 == 1/31/2018

20.1.18 ==== 21.1.18

N / A ======= N / A


方法1:

CASE WHEN ISDATE(MYCOL) = 1 THEN DateAdd(day,1,MYCOL) ELSE MYCOL END

结果:只有美军将+1,英国格式将被忽略


方法2:

CASE WHEN ISDATE(CONVERT(Datetime,MYCOL,4)) = 1 THEN DateAdd(day,1,CONVERT(VARCHAR(30),MYCOL,4)) ELSE MYCOL END

结果:由于垃圾数据“ N / A”,从ISDATE(CONVERT(Datetime,MYCOL,4))处的字符串转换日期和/或时间时转换失败


已编辑

垃圾数据不仅会 “ N / A”,可以是任何东西。

1 个答案:

答案 0 :(得分:0)

这如何:

CASE WHEN MYCOL = 'N/A' THEN MYCOL 
     ELSE CASE WHEN ISDATE(CONVERT(Datetime,MYCOL,4)) = 1 THEN DateAdd(day,1,CONVERT(VARCHAR(30),MYCOL,4)) ELSE MYCOL END