SET DATEFORMAT (Transact-SQL)

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

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Cинтаксические обозначения в 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

См. также

Справочник

Инструкции SET (Transact-SQL)