date (Transact-SQL)

Описывает дату.

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

Описание типа данных date

Свойство

Значение

Синтаксис

date

Сведения об использовании

DECLARE @MyDate date

CREATE TABLE Таблица1 ( Столбец1 date )

Формат строковых литералов по умолчанию

(используется для клиента нижнего уровня)

ГГГГ-ММ-ДД

Дополнительные сведения см. в подразделе «Обратная совместимость для клиентов нижнего уровня» раздела Использование данных даты и времени.

Диапазон

От 0001-01-01 до 9999-12-31

От 1 января 1 года до 31 декабря 9999 года

Диапазоны элементов

ГГГГ обозначает 4 цифры, которые представляют год и принимают значения от 0001 до 9999.

ММ обозначает 2 цифры, которые представляют месяц и принимают значения от 01 до 12.

ДД обозначает две цифры, представляющие день указанного месяца и принимающие значения от 01 до 31 в зависимости от месяца.

Длина в символах

10 позиций

Точность, масштаб

10, 0

Объем памяти

3 байта, фиксированный

Структура хранилища

Дата хранится в одной переменной типа integer размером 1 или 3 байта.

Точность

Один день

Значение по умолчанию

1900-01-01

Данное значение используется как присоединяемая часть даты при неявном преобразовании данных типа time в значение типа datetime2 или datetimeoffset.

Календарь

Григорианский

Определяемая пользователем точность в долях секунды

Нет

Учет и сохранение смещения часового пояса

Нет

Учет перехода на летнее время

Нет

Поддерживаемые форматы строковых литералов для типа данных date

В следующей таблице перечислены допустимые форматы строковых литералов для типа данных date.

Числовой

Описание

мдг

[м]м/дд/[гг]гг

[м]м-дд-[гг]гг

[м]м.дд.[гг]гг

мгд

мм/[гг]гг/дд

мм-[гг]гг/дд

[м]м.[гг]гг.дд

дмг

дд/[м]м/[гг]гг

дд-[м]м-[гг]гг

дд.[м]м.[гг]гг

дгм

дд/[гг]гг/[м]м

дд-[гг]гг-[м]м

дд.[гг]гг.[м]м

гмд

[гг]гг/[м]м/дд

[гг]гг-[м]м-дд

[гг]гг-[м]м-дд

Сочетания [м]м, дд и [гг]гг представляют в строке месяц, день и год, разделенные символом косой черты (/), дефисом (-) или точкой (.).

Поддерживаются только двух- и четырехзначные форматы записи года. Для записи года рекомендуется всегда использовать четырехзначный формат. Чтобы указать целое число в промежутке от 0001 до 9999, отображающее пороговое значение года при преобразовании двухзначной записи в четырехзначную, необходимо использовать Параметр two digit year cutoff.

Если двузначное число, обозначающее год, меньше или равно двузначному числу из последних двух цифр порогового года, год относится к тому же столетию, что и пороговый год. Если двузначное число, обозначающее год, больше двузначного числа из последних двух цифр порогового года, год относится к столетию, которое предшествует столетию порогового года. Например, если пороговое значение года для двухзначной записи равно 2049, то год, обозначенный двумя цифрами 49, интерпретируется как 2049, а год, обозначенный двумя цифрами 50, интерпретируется как 1950.

Формат даты по умолчанию определяется текущими настройками языковых стандартов. Формат даты можно изменить с помощью инструкций SET LANGUAGE и SET DATEFORMAT.

Формат ydm (гдм) не поддерживается для типа данных date.

Алфавитный формат

Описание

мес [дд][,] гггг

мес дд[,] [гг]гг

мес гггг [дд]

[дд] мес[,] гггг

дд мес[,][гг]гг

дд [гг]гг мес

[дд] гггг мес

гггг мес [дд]

гггг [дд] мес

Значение mon (мес) означает полное или сокращенное название месяца на текущем языке. Запятые являются необязательными, регистр букв не учитывается.

Во избежание неоднозначности используйте четырехзначную запись года.

Если не указано число месяца, подразумевается первое число месяца.

ISO 8601

Описание

ГГГГ-ММ-ДД

ГГГГММДД

То же, что и стандарт SQL. Является единственным международным стандартом.

Без разделителей

Описание

[гг]ггммдд

гггг[мм][дд]

Данные типа date могут быть заданы с помощью четырех, шести или восьми цифр. Строка из шести или восьми знаков всегда интерпретируется как ymd (гмд). На месяц и день всегда должно приходиться по две цифры. Строка из четырех цифр воспринимается как значение года.

Интерфейс ODBC

Описание

{ д 'гггг-мм-дд' }

Зависит от API-интерфейса ODBC.

Работает в SQL Server 2008 так же, как и в SQL Server 2005.

Формат W3C XML

Описание

гггг-мм-ддTZD

Специально введен для использования в XML и SOAP.

TZD обозначает часовой пояс (в виде номера или смещения +чч:мм и -чч:мм):

  • «чч:мм» обозначает смещение временного пояса. Обозначение «чч» состоит из двух цифр, представляющих смещение в часах, и принимает значения от 0 до 14.

  • Обозначение «мм» состоит из двух цифр, представляющих дополнительное смещение временного пояса в минутах, и принимает значения от 0 до 59.

  • + (плюс) или – (минус) представляет собой обязательный знак смещения часового пояса. Данный знак указывает, добавляется или вычитается смещение часового пояса от времени по Гринвичу (формат UTC), чтобы получить локальное время. Допустимый диапазон смещения часового пояса: от -14:00 до +14:00.

Соответствие стандартам ANSI и ISO 8601

date соответствует стандартному определению ANSI SQL для григорианского календаря: "Замечание 85 — Данные типа Datetime позволяют хранить даты григорианского календаря в виде чисел диапазона от 0001–01–01 CE до 9999–12–31 CE."

Формат строковых литералов по умолчанию, используемый для клиентов нижнего уровня, соответствует стандарту SQL, в котором он определен как ГГГГ-ММ-ДД. Данный формат аналогичен определению даты в стандарте ISO 8601.

Пример

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

SELECT 
     CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date' 
    ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 
        'smalldatetime' 
    ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 
        'datetime2'
    ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 
        'datetimeoffset';

Ниже приводится результирующий набор.

Тип данных

Результат

time

12:35:29. 1234567

date

2007-05-08

smalldatetime

2007-05-08 12:35:00

datetime

2007-05-08 12:35:29.123

datetime2

2007-05-08 12:35:29. 1234567

datetimeoffset

2007-05-08 12:35:29.1234567 +12:15