【发布时间】:2013-10-03 01:53:25
【问题描述】:
我希望使用 db2 数据库将整数转换为天数。整数的格式为 20130101 或 YYYYMMDD。我相信您必须在将整数转换为字符后编写自定义函数,但我不确定如何将第二次转换为 DAYS。我正在寻找从 20130101 到 2013 年 1 月 1 日的返回格式。
WITH
/*****************************************************
*** Sample Data ***
*****************************************************/
sample_data
( START_DATE , END_DATE ) AS
(
VALUES
(20130101, 20131227 )
, (20130930, 20131230 )
, (20130411, 20130912 )
, (20130410, 20140101 )
)
,
t2(START_DATE, END_DATE) AS
( SELECT
CAST(SUBSTR(START_DATE, 1,4) CONCAT '-'
CONCAT SUBSTR(START_DATE, 5,2) CONCAT '-'
CONCAT SUBSTR(START_DATE, 7,2) AS CHAR(15)),
CAST(SUBSTR(END_DATE, 1,4) CONCAT '-'
CONCAT SUBSTR(END_DATE, 5,2) CONCAT '-'
CONCAT SUBSTR(END_DATE, 7,2) AS CHAR(15))
FROM SAMPLE_DATA
)
SELECT
START_DATE,
END_DATE
FROM t2
【问题讨论】:
-
“转换为 DAYS”是什么意思?在 DB2 中,有一个
DAYS()函数将日期转换为表示自 '01/01/0001' 以来的天数的整数,但您表明您需要January 1, 2013。 -
天数与 YYYYMMDD 格式的数字非常不同。
-
日期实际上是我正在寻找的,而伊恩的回答成功了。