在IBM DB2中将日期字段转换为周数

j2cgzkjk  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(255)

我有一个日期字段**(CHAR数据类型**),其值的格式如下:年月日
例如20140729。
我想将其转换为YYYYWKNO格式的Weeknumber
例如,结果将是201432。
如何在IBM DB2中实现这一点?

bpsygsoo

bpsygsoo1#

幸运的是,DB2有一些非常好的日期格式化函数,虽然文档链接是针对DB2 for Linux/Unix/Windows的,但它也适用于DB2 for z/OS。
您可以使用TIMESTAMP_FORMAT()CHAR字段转换为实际日期,然后使用VARCHAR_FORMAT()将其格式化为您想要的格式:

SELECT
    VARCHAR_FORMAT(
         TIMESTAMP_FORMAT(
             '20140801'
            ,'YYYYMMDD'
         )
        ,'YYYYWW'
    )
FROM SYSIBM.SYSDUMMY1

“周”有两种不同的格式,一种是WW,它将基于从1月1日开始到1月7日结束的一周来给予周,另一种是IW,它将给出ISO Week.。请参阅VARCHAR_FORMAT的文档页面以了解其他可用的格式。

ajsxfq5m

ajsxfq5m2#

下面得到的是第31周而不是第32周。但总的来说,我认为这是解决这个问题的好办法:

SELECT    TO_DATE('20140801', 'YYYYMMDD') AS MYDATE
        , YEAR(TO_DATE('20140801', 'YYYYMMDD')) * 100 + WEEK(TO_DATE('20140801', 'YYYYMMDD')) AS YYYYWKNO
FROM      SYSIBM.SYSDUMMY1

相关问题