【问题标题】:SQL Date Format Conversion YYYYMMDDSQL 日期格式转换 YYYYMMDD
【发布时间】:2016-03-08 19:57:29
【问题描述】:

我有一个表,其中在 [DATE_READ] 列中以 Decimal(9,0) 类型存储了许多日期。我需要在这些条目上使用 DATEADD,因此我使用以下代码将它们转换为 varchar,然后再转换为日期:

    CASE WHEN A.[DATE_READ] <> 0 AND LEN(A.[DATE_READ]) = 6 
        THEN dateadd(day,1,CONVERT(date, '20' + CONVERT(varchar(8), A.[DATE_READ]), 112))
       WHEN LEN(A.[DATE_READ]) = 8
        THEN dateadd(day,1,CONVERT(date, CONVERT(varchar(10), A.[DATE_READ]), 112))

我的问题是只显示日期,好像我在 DATEADD 函数中使用 110 而不是 112 并且只显示前 8 个字符,所以它看起来像“2012-12-”而不是“20121205”。我不介意日期的格式,但我需要让我的代码正常工作,这样我才能在输出中看到日期。

【问题讨论】:

    标签: sql sqldatatypes date-formatting dateadd sql-date-functions


    【解决方案1】:

    您缺少最终转换为 112。由于 DATEADD 返回一个日期,您需要格式化该日期以便输出。

    CONVERT(VARCHAR(8), 
     CASE 
      WHEN A.[DATE_READ] <> 0 AND LEN(A.[DATE_READ]) = 6 
      THEN dateadd(day,1,CONVERT(date, '20' + CONVERT(varchar(8), A.[DATE_READ]), 112))
     WHEN LEN(A.[DATE_READ]) = 8
      THEN dateadd(day,1,CONVERT(date, CONVERT(varchar(10), A.[DATE_READ]), 112)) END,
    112)
    

    【讨论】:

    • 谢谢,这正是我需要的!
    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 2017-05-12
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 2011-01-21
    相关资源
    最近更新 更多