代码之家  ›  专栏  ›  技术社区  ›  Nerdynosaur

SQL DateAdd到包含英国和美国格式数据的列

  •  0
  • Nerdynosaur  · 技术社区  · 6 年前

    我有一个存储日期时间数据的列。但这些数据可能是美国格式、英国格式,也可能是一些垃圾数据。问题是我想尝试将dataadd添加到这个列中。当数据是英国或美国格式时,我将dateadd+1,否则将保留垃圾数据。


    前=后

    2018年1月30日==2018年1月31日

    20.1.18===21.1.18

    不适用=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
    

    结果:在 ISDATE(CONVERT(Datetime,MYCOL,4)) 因为垃圾数据“不适用”


    编辑:

    垃圾数据将不仅仅是 “不适用”,它可以是任何东西。

    1 回复  |  直到 6 年前
        1
  •  0
  •   DevMS    6 年前

    这个怎么样:

    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