datetime2 (Transact-SQL)

Определяет дату, объединенную со временем дня в 24-часовом формате. Тип данных datetime2 может рассматриваться как расширение существующего типа datetime, имеющее более широкий диапазон дат, большую точность в долях секунды по умолчанию и необязательную пользовательскую точность.

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

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

Свойство

Значение

Синтаксис

datetime2 [ (fractional seconds precision) ]

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

DECLARE @MyDatetime2 datetime2(7)

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

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

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

ГГГГ-ММ-ДД чч:мм:сс[.доли секунды]

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

Диапазон даты

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

С 1 января 1 года нашей эры до 31 декабря 9999 года нашей эры.

Диапазон времени

От 00:00:00 до 23:59:59.9999999

Диапазон смещения часового пояса

Отсутствует

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

ГГГГ представляет собой четырехзначное число от 0001 до 9999, определяющее год.

ММ — двузначное число от 01 до 12, представляющее месяц указанного года.

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

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

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

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

Обозначение n* может содержать от нуля до семи цифр, представляющих доли секунды, и принимает значения от 0 до 9999999.

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

Минимальная — 19 позиций (ГГГГ-ММ-ДД чч:мм:сс), максимальная — 27 позиций ((ГГГГ-ММ-ДД чч:мм:сс.0000000)

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

От 0 до 7 цифр, с точностью 100 нс. Точность по умолчанию составляет 7 цифр.

Объем памяти

Необходимо 6 байт для представления точности меньше 3 цифр, 7 байт — для точности в 3 и 4 цифр. Для представления любых других значений точности требуется 8 байт.

Точность

100 наносекунд

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

1900-01-01 00:00:00

Календарь

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

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

Да

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

Нет

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

Нет

Сведения о метаданных для типов данных см. в разделе sys.systypes (Transact-SQL) или TYPEPROPERTY (Transact-SQL). В некоторых типах данных дат и времени точность и масштаб разные. Сведения о точности и масштабе для столбца см. в разделе COLUMNPROPERTY (Transact-SQL), COL_LENGTH (Transact-SQL) или sys.columns (Transact-SQL).

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

В следующих таблицах приводятся поддерживаемые форматы строковых литералов ISO 8601 и ODBC для типа данных datetime2. Дополнительные сведения об алфавитных и числовых форматах, форматах строки без разделителей и форматах времени для компонентов даты и времени datetime2 см. в разделах date (Transact-SQL) и time (Transact-SQL).

ISO 8601

Описания

ГГГГ-ММ-ДДТчч:мм:сс[.nnnnnnn]

ГГГГ-ММ-ДДТчч:мм:сс[.nnnnnnn]

На этот формат не влияют настройки языкового стандарта сеанса инструкций SET LANGUAGE и SET DATEFORMAT. Символы T, двоеточие (:) и точка (.) включаются в строковый литерал, например «2007-05-02T19:58:47.1234567».

ODBC

Описание

{ ts 'гггг-мм-дд чч:мм:сс[.доли секунды]' }

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

  • Можно указать от 0 до 7 знаков (100 наносекунд) справа от десятичной запятой, представляющих доли секунды.

  • В SQL Server 2008 при уровне совместимости, равном 10, устанавливается внутреннее соответствие литералов новому типу данных time.

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

Соглашения стандартов ANSI и ISO 8601 для типов данных date и time применимы к типу данных datetime2.

Примеры

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

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