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)
我有一个 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)