SET DATEFIRST (Transact-SQL)

Устанавливает первый день недели в виде числа от 1 до 7.

Общие сведения обо всех типах данных и функциях даты и времени в языке Transact-SQL см. в разделе Типы данных и функции даты и времени (Transact-SQL).

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

SET DATEFIRST { number | @number_var } 

Аргументы

  • number | **@**number_var
    Целочисленное значение, указывающее первый день недели. Может быть одним из:

    Значение

    Первый день недели

    1

    Понедельник

    2

    Вторник

    3

    Среда

    4

    Четверг

    5

    Пятница

    6

    Суббота

    7 (по умолчанию, американский английский)

    Воскресенье

Замечания

Для просмотра текущего значения SET DATEFIRST используется функция @@DATEFIRST.

Аргумент функции SET DATEFIRST устанавливается во время выполнения или запуска, а не во время синтаксического анализа.

Указание SET DATEFIRST не влияет на DATEDIFF. DATEDIFF всегда считает воскресенье первым днем недели, чтобы обеспечить детерминистичность работы функции.

Разрешения

Выполнять данную хранимую процедуру могут члены роли public.

Примеры

Следующий пример иллюстрирует получение по дате соответствующего ей дня недели, а также показывает эффект от изменения параметра DATEFIRST.

-- SET DATEFIRST to U.S. English default value of 7.
SET DATEFIRST 7;

SELECT CAST('1999-1-1' AS datetime2) AS SelectDate
    ,DATEPART(dw, '1999-1-1') AS DayOfWeek;
-- January 1, 1999 is a Friday. Because the U.S. English default 
-- specifies Sunday as the first day of the week, DATEPART of 1999-1-1
-- (Friday) yields a value of 6, because Friday is the sixth day of the 
-- week when you start with Sunday as day 1.

SET DATEFIRST 3;
-- Because Wednesday is now considered the first day of the week,
-- DATEPART now shows that 1999-1-1 (a Friday) is the third day of the 
-- week. The following DATEPART function should return a value of 3.
SELECT CAST('1999-1-1' AS datetime2) AS SelectDate
    ,DATEPART(dw, '1999-1-1') AS DayOfWeek;
GO

См. также

Справочник

Инструкции SET (Transact-SQL)