Как получить год и неделю по стандарту ISO 8601?
Есть код ниже, который выводит строку содержащую год/неделю 202153. Но нужно, чтобы вместо первой недели 2021 года, была последняя неделя 2020 года, то есть года ISO.
Есть ли встроенная функция для решения этой проблемы?
SELECT to_char(to_date('20210104', 'YYYYMMDD') - 3, 'YYYYIW') AS yearweek
FROM dual;
YEARWE
------
202153
Ожидаемый вывод: 202053.
Конечно, можно просто применить decode, но надеюсь, что есть более удачное решение.
Свободный перевод вопроса ISO Week 202153 от участника @jeiv
Полезный комментарий:
Может стоит использовать официальный формат согласно ISO-8601:
TO_CHAR(..., 'IYYY "W "IW')
, чтобы избежать двусмысленного формата YYYYMM - Wernfried Domscheit
Ответы (1 шт):
Автор решения: 0xdb
→ Ссылка
Надо использвоать маску формата IYYY (ISO год) вместо YYYY (календарный год):
select to_char (date'2021-01-04' - 3, 'IYYYIW') yearweek
from dual
/
YEARWEEK
--------
202053