SET DATEFIRST (Transact-SQL)

Относится к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse AnalyticsАналитическая платформа (PDW)SQL база данных в Microsoft Fabric

Устанавливает первый день недели в виде числа от 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