Поиск первого дня недели в MSSQL

Задача
на вход: дата
на выходе: дата, которая была понедельником в той неделе в которую вошла исходная дата. Т.е. фактически первый день недели.


declare @Date DATETIME;
SET @Date='20110416';
select dateadd(week,DATEPART(WK, @Date)-1,dateadd(Year,DATEPART(yyyy, @Date)-1900,'19000101'))-datepart(weekday,dateadd(Year,DATEPART(yyyy, @Date)-1900,'19000101'))+1

Метки:

Получать новые сообщения по Email

2 комментариев на “Поиск первого дня недели в MSSQL”

  1. Axm пишет:

    Можно сделать гораздо проще:
    DATEADD, @Date)
    Ваш подход не работает, если первым днем недели является воскресенье, что характерно для США и всех серверов, которые настроены на SET DATEFIRST 7; (по умолчанию всегда так).

  2. Axm пишет:

    Парсер порезал запрос. :(

Оставить комментарий