如何根据ISO得到Year/Week?

How to get Year/Week according to ISO?

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

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

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

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

使用 IYYY(ISO 年)而不是 YYYY(日历年)格式模型。

SELECT TO_CHAR( DATE '2021-01-04' - 3, 'IYYYIW') AS yearweek
FROM   DUAL

输出:

YEARWEEK
202053

db<>fiddle here