SET DATEFORMAT (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Задает порядок элементов даты (месяц, день, год) при интерпретации символьных строк дат. Эти строки имеют тип date, smalldatetime, datetime, datetime2 или datetimeoffset.
Обзор всех типов данных и функций даты и времени в языке Transact-SQL см. в статье Типы данных и функции даты и времени (Transact-SQL).
Соглашения о синтаксисе Transact-SQL
Синтаксис
SET DATEFORMAT { format | @format_var }
Аргументы
format | @format_var
Порядок следования составляющих частей даты. Допустимые параметры: mdy, dmy, ymd, ydm, myd и dym. Может быть задано в формате Юникод или в виде двухбайтовой кодировки (DBCS), преобразованной в Юникод. По умолчанию для английского языка США используется mdy. Значения параметра DATEFORMAT по умолчанию для всех поддерживаемых языков см. в разделе sp_helplanguage (Transact-SQL).
Замечания
Значение ydm параметра DATEFORMAT не поддерживается для типов данных date, datetime2 и datetimeoffset.
Параметр DATEFORMAT может интерпретировать символьные строки по-разному для разных типов данных даты в зависимости от их формата строк. Например, интерпретации datetime и smalldatetime могут не соответствовать date, datetime2 или datetimeoffset. Этот параметр влияет на интерпретацию символьных строк при их преобразовании в значения даты для базы данных. Он не влияет на отображение значений типов данных даты, хранящихся в базе данных, а также на формат их хранения.
Некоторые форматы символьных строк, например 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