如何根据ISO获得年/周?

问题描述

我有下面的代码,它给出了第 202153 周。但是,我需要将 2021 年的第一周改为 202153,而不是 202053。

是否有任何内置功能可以解决这个问题?

SELECT
    to_char(TO_DATE('20210104','YYYYMMDD') - 3,'YYYYIW') AS yearweek
FROM
    dual

预期输出:202053。我可以简单地解码该值,但我希望在未来几年有更强大的解决方案。

解决方法

使用 volatile int no_more_writes = 0; (ISO 年)而不是 IYYY(日历年)格式模型。

YYYY

输出:

年周
202053

dbfiddle here