SET DATEFORMAT (Transact-SQL)

Применимо к:SQL ServerБаза данных Azure SQLУправляемый экземпляр Azure SQLAzure Synapse AnalyticsСистема платформы аналитики (PDW)Конечная точка SQL аналитики в Microsoft FabricХранилище в Microsoft FabricБаза данных SQL в Microsoft Fabric

Задает порядок элементов даты (месяц, день, год) при интерпретации символьных строк дат. Эти строки имеют тип date, smalldatetime, datetime, datetime2 или datetimeoffset.

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

SET DATEFORMAT { format | @format_var }   

Аргументы

формат | @format_var
Порядок следования составляющих частей даты. Допустимые параметры: mdy, dmy, ymd, ydm, myd и dym. Может быть задано в формате Юникод или в виде двухбайтовой кодировки (DBCS), преобразованной в Юникод. По умолчанию для английского языка США используется mdy. Для стандартных DATEFORMAT вариантов всех поддерживающих языков см. sp_helplanguage (Transact-SQL).

Замечания

DATEFORMAT YDM не поддерживается для типов данных с датой, датойтайм2 и дататайм-офсетом.

Настройка DATEFORMAT может по-разному интерпретировать строки символов для типов данных дат, в зависимости от формата строк. Например, интерпретации datetime и smalldatetime могут не соответствовать date, datetime2 или datetimeoffset. DATEFORMAT влияет на интерпретацию строк символов при их преобразовании в значения дат для базы данных. Он не влияет на отображение значений типов данных даты, хранящихся в базе данных, а также на формат их хранения.

Некоторые форматы строк символов, например ISO 8601, интерпретируются независимо от настройки DATEFORMAT .

Параметр SET DATEFORMAT устанавливается во время выполнения или выполнения, а не во время синтаксического анализа.

SET DATEFORMATпереопределяет неявное форматирование даты .SET LANGUAGE

Разрешения

Необходимо быть членом роли public.

Примеры

В следующем примере в качестве входных параметров сеансов используются различные строковые значения дат с одинаковым значением параметра DATEFORMAT.

-- Set date format to day/month/year.  
SET DATEFORMAT dmy;  
GO  
DECLARE @datevar DATETIME2 = '31/12/2008 09:01:01.1234567';  
SELECT @datevar;  
GO  
-- Result: 2008-12-31 09:01:01.123  
SET DATEFORMAT dmy;  
GO  
DECLARE @datevar DATETIME2 = '12/31/2008 09:01:01.1234567';  
SELECT @datevar;  
GO  
-- Result: Msg 241: Conversion failed when converting date and/or time -- from character string.  
  
GO  

См. также

SET Операторы (Transact-SQL)