Kovalenko Dmitry пишет:

SELECT (extract(yearday from CAST('02.01.2000' as DATE)) -
        extract(weekday from CAST('02.01.2000' as DATE)) + 6)/7 + 1
from rdb$database

даст неделю номер 2.

Все правильно. 1 января было в субботу - это первая неделя. 2 января
попадает на воскресенье. А воскресенье у буржуев - начало новой
недели. Значит все правильно, второе января 2002 года - это вторая
неделя.

Ну, во-первых, в приведённом примере - не 2002, а 2000 год. :)

А во-вторых, как насчёт ISO 8601? Который на производствах всяких там и
даже в мобильниках используется. ;) Там неделя начинается с
понедельника, однако первая неделя года та, которая включает в себя
первый четверг года (то есть в ней не менее четырёх первых дней года).
В примере с 2000 годом первая неделя начнётся 3-го числа. А первое и
второе - 52 неделя 1999 года.

С буквоедственным уважением,
Денис Редозубов.

Ответить