SET DATEFORMAT (Transact-SQL)
Задает порядок составляющих частей даты (месяца, дня, года) при интерпретации символьных строк как данных типа 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