Как найти максимальное значение ISO за неделю в году - PullRequest
3 голосов
/ 02 августа 2020

Есть ли способ найти номер последней недели для года.

Например, для года 2018 номер последней недели 2018 года равен 52.

Для год 2015, номер последней недели 53.

Ответы [ 3 ]

4 голосов
/ 02 августа 2020

Если вы имеете в виду недели ISO, вы можете использовать определения около недель ISO. Первая неделя года всегда включает 4 января. Следовательно, последняя неделя года всегда включает дни 4-7 января, что составляет De c 28. Итак:

select to_char(to_date(year || '-12-28', 'YYYY-MM-DD'), 'IW')
1 голос
/ 02 августа 2020

Вы можете использовать приведенный ниже код, используя как неделю ISO, так и обычную неделю.

SELECT 
CASE WHEN WEEK_NUM = ISO_WEEK_NUM 
THEN ISO_WEEK_NUM 
ELSE WEEK_NUM -ISO_WEEK_NUM 
END AS LAST_WEEK FROM 
(
    SELECT 
    to_number(to_char(to_date('12/31/2015','MM/DD/YYYY'),'WW')) week_num, 
    to_number(to_char(to_date('12/31/2015','MM/DD/YYYY'),'IW')) iso_week_num
    FROM dual
);
0 голосов
/ 02 августа 2020

Последняя неделя всегда остается в декабре, в котором всегда 31 день. Давайте сгенерируем 31 строку для поиска наибольшего значения, затем:

select max(
       to_char(to_date(:i_year||'-12-'||lpad(level,2,'0'),'yyyy-mm-dd'),'iw')
       ) as last_ISO_week
  from dual
connect by level <= 31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...