SQL日期格式转换YYYYMMDD

SQL Date Format Conversion YYYYMMDD

我有一个 table,其中许多日期存储为 [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”。我不介意日期的格式,但我需要让我的代码正常工作,以便我可以在输出中看到日期。

您缺少最终转换为 112 的过程。由于 DATEADD returns 日期,您需要格式化该日期以进行输出。

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)