SET DATEFIRST (Transact-SQL)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Устанавливает первый день недели в виде числа от 1 до 7.
Обзор всех типов данных и функций даты и времени в языке Transact-SQL см. в статье Типы данных и функции даты и времени (Transact-SQL).
Соглашения о синтаксисе Transact-SQL
Синтаксис
Синтаксис для SQL Server и базы данных SQL Azure
SET DATEFIRST { number | @number_var }
Синтаксис для Azure Synapse Analytics и Parallel Data Warehouse
SET DATEFIRST 7 ;
Аргументы
число | @number_var
Целочисленное значение, указывающее первый день недели. Может быть одним из указанных далее.
Значение | Первый день недели |
---|---|
1 |
Понедельник |
2 |
Вторник |
3 |
Среда |
4 |
Четверг |
5 |
Пятница |
6 |
Суббота |
7 (по умолчанию, английский язык США) |
Воскресенье |
Замечания
Для просмотра текущего значения SET DATEFIRST используется функция @@DATEFIRST.
Аргумент функции SET DATEFIRST устанавливается во время выполнения или запуска, а не во время синтаксического анализа.
Указание SET DATEFIRST не влияет на DATEDIFF. DATEDIFF всегда считает воскресенье первым днем недели, чтобы обеспечить детерминизм работы функции.
Как и все инструкции SET, SET DATEFIRST влияет на текущий сеанс.
Разрешения
Необходимо быть членом роли 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