Типы данных и функции даты и времени (Transact-SQL)

В следующих разделах представлен обзор всех типов данных и функций даты и времени Transact-SQL.

  • Типы данных даты и времени

  • Функции даты и времени

    • Функции, получающие значения системной даты и времени

    • Функции, получающие компоненты даты и времени

    • Функции, получающие значения даты и времени из их компонентов

    • Функции, получающие разность даты и времени

    • Функции, изменяющие значения даты и времени

    • Функции, устанавливающие или получающие формат сеанса

    • Функции, проверяющие значения даты и времени

  • Дата и время — см. также

Типы данных даты и времени

Типы данных даты и времени Transact-SQL перечислены в следующей таблице. 

Тип данных

Format

Диапазон

Точность

Объем памяти (в байтах)

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

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

time;

чч:мм:сс[. ннннннн]

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

100 наносекунд

От 3 до 5

Да

Нет

date

ГГГГ-ММ-ДД

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

1 день

3

Нет

Нет

smalldatetime

ГГГГ-ММ-ДД чч:мм:сс

От 01.01.1900 до 06.06.2079

1 минута

4

Нет

Нет

datetime

ГГГГ-ММ-ДД чч:мм:сс[. ннн]

От 01.01.1753 до 31.12.9999

0,00333 секунды

8

Нет

Нет

datetime2

ГГГГ-ММ-ДД чч:мм:сс[. ннннннн]

От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.9999999

100 наносекунд

От 6 до 8

Да

Нет

datetimeoffset

ГГГГ-ММ-ДД чч:мм:сс[. ннннннн] [+|-]чч:мм

От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.9999999 (время в формате UTC)

100 наносекунд

От 8 до 10

Да

Да

Примечание

Тип данных Transact-SQL rowversion не относится к типам данных даты и времени.timestamp является устаревшим синонимом rowversion.

Функции даты и времени

Функции даты и времени Transact-SQL перечислены в следующих таблицах. Дополнительные сведения о детерминизме см. в разделе Детерминированные и недетерминированные функции.

Функции, получающие значения системной даты и времени

Все значения системной даты и времени наследуется от операционной системы компьютера, на котором работает экземпляр SQL Server.

Высокоточные функции системной даты и времени

SQL Server 2014 получает значения даты и времени с помощью функции GetSystemTimeAsFileTime() Windows API. Точность зависит от физического оборудования и версии Windows, в которой запущен экземпляр SQL Server. Точность возвращаемых значений этого API-интерфейса задана равной 100 нс. Точность может быть определена с помощью метода GetSystemTimeAdjustment() API-интерфейса Windows.

Функция

Синтаксис

Возвращаемое значение

Тип возвращаемых данных

Детерминизм

SYSDATETIME

SYSDATETIME ()

Возвращает значение типа datetime2(7), которое содержит дату и время компьютера, на котором запущен экземпляр SQL Server. Смещение часового пояса не включается.

datetime2(7)

Недетерминированная

SYSDATETIMEOFFSET

SYSDATETIMEOFFSET ( )

Возвращает значение типа datetimeoffset(7), которое содержит дату и время компьютера, на котором запущен экземпляр SQL Server. Смещение часового пояса включается.

datetimeoffset(7)

Недетерминированная

SYSUTCDATETIME

SYSUTCDATETIME ( )

Возвращает значение типа datetime2(7), которое содержит дату и время компьютера, на котором запущен экземпляр SQL Server. Возвращаемые дата и время отображаются в формате UTC.

datetime2(7)

Недетерминированная

Функции системной даты и времени меньшей точности

Функция

Синтаксис

Возвращаемое значение

Тип возвращаемых данных

Детерминизм

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP

Возвращает значение типа datetime, которое содержит дату и время компьютера, на котором запущен экземпляр SQL Server. Смещение часового пояса не включается.

datetime

Недетерминированная

GETDATE

GETDATE ( )

Возвращает значение типа datetime, которое содержит дату и время компьютера, на котором запущен экземпляр SQL Server. Смещение часового пояса не включается.

datetime

Недетерминированная

GETUTCDATE

GETUTCDATE ( )

Возвращает значение типа datetime, которое содержит дату и время компьютера, на котором запущен экземпляр SQL Server. Возвращаемые дата и время отображаются в формате UTC.

datetime

Недетерминированная

Функции, получающие компоненты даты и времени

Функция

Синтаксис

Возвращаемое значение

Тип возвращаемых данных

Детерминизм

DATENAME

DATENAME ( datepart, date )

Возвращает строку символов, представляющую указанную часть datepart заданной даты.

nvarchar

Недетерминированная

DATEPART

DATEPART ( datepart, date )

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

int

Недетерминированная

DAY

DAY (date)

Возвращает целое число, представляющее день указанной даты date.

int

Детерминированное

MONTH

MONTH ( date )

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

int

Детерминированное

YEAR

YEAR (date)

Возвращает целое число, представляющее год указанной даты date.

int

Детерминированная

Функции, получающие значения даты и времени из их компонентов

Функция

Синтаксис

Возвращаемое значение

Тип возвращаемых данных

Детерминизм

DATEFROMPARTS

DATEFROMPARTS (year, month, day)

Возвращает значение date, соответствующее указанному числу, месяцу и году.

date

Детерминированная

DATETIME2FROMPARTS

DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision )

Возвращает значение datetime2, соответствующее указанной дате и времени с заданной точностью.

datetime2 ( precision )

Детерминированная

DATETIMEFROMPARTS

DATETIMEFROMPARTS (year, month, day, hour, minute, seconds, milliseconds)

Возвращает значение datetime, соответствующее указанной дате и времени.

datetime

Детерминированная

DATETIMEOFFSETFROMPARTS

DATETIMEOFFSETFROMPARTS (year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision)

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

datetime ( precision )

Детерминированная

SMALLDATETIMEFROMPARTS

SMALLDATETIMEFROMPARTS (year, month, day, hour, minute)

Возвращает значение smalldatetime, соответствующее указанной дате и времени.

smalldatetime

Детерминированная

TIMEFROMPARTS

TIMEFROMPARTS (hour, minute, seconds, fractions, precision)

Возвращает значение time, соответствующее указанному времени с установленной точностью.

time ( precision )

Детерминированная

Функции, получающие разность даты и времени

Функция

Синтаксис

Возвращаемое значение

Тип возвращаемых данных

Детерминизм

DATEDIFF

DATEDIFF ( datepart, startdate , enddate )

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

int

Детерминированное

Функции, изменяющие значения даты и времени

Функция

Синтаксис

Возвращаемое значение

Тип возвращаемых данных

Детерминизм

DATEADD

DATEADD (datepart, number , date )

Возвращает новое значение datetime, добавляя интервал к указанной части datepart заданной даты date.

Тип данных аргумента date

Детерминированная

EOMONTH

EOMONTH (start_date [, month_to_add ])

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

Возвращаемые данные имеют тип start_date или datetime2(7).

Детерминированная

SWITCHOFFSET

SWITCHOFFSET (DATETIMEOFFSET , time_zone)

SWITCHOFFSET изменяет смещение часового пояса для значения DATETIMEOFFSET и сохраняет значение UTC.

datetimeoffset с точностью в долях секунд DATETIMEOFFSET

Детерминированное

TODATETIMEOFFSET

TODATETIMEOFFSET (expression , time_zone)

TODATETIMEOFFSET преобразует значение типа datetime2 в значение типа datetimeoffset. Значение datetime2 преобразуется в местное время для указанного time_zone.

datetimeoffset с точностью в долях секунд аргумента datetime

Детерминированное

Функции, устанавливающие или получающие формат сеанса

Функция

Синтаксис

Возвращаемое значение

Тип возвращаемых данных

Детерминизм

@@DATEFIRST

@@DATEFIRST

Возвращает текущее значение параметра SET DATEFIRST для сеанса.

tinyint

Недетерминированная

SET DATEFIRST

SET DATEFIRST { number | @number_var }

Устанавливает первый день недели в виде числа от 1 до 7.

Неприменимо

Неприменимо

SET DATEFORMAT

SET DATEFORMAT { format | @format_var }

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

Неприменимо

Неприменимо

@@LANGUAGE

@@LANGUAGE

Возвращает название используемого в данный момент языка. @@LANGUAGE не является функцией даты или времени. Однако на данные, выводимые функциями даты, могут повлиять настройки языка.

Неприменимо

Неприменимо

SET LANGUAGE

SET LANGUAGE { [ N ] 'language' | @language_var }

Устанавливает языковую среду сеанса и системных сообщений. SET LANGUAGE не является функцией даты или времени. Однако на данные, выводимые функциями даты, влияет параметр языка.

Неприменимо

Неприменимо

sp_helplanguage

sp_helplanguage [ [ @language = ] 'language' ]

Возвращает сведения о формате даты всех поддерживаемых языков. sp_helplanguage не является хранимой процедурой даты или времени. Однако на данные, выводимые функциями даты, влияет параметр языка.

Неприменимо

Неприменимо

Функции, проверяющие значения даты и времени

Функция

Синтаксис

Возвращаемое значение

Тип возвращаемых данных

Детерминизм

ISDATE

ISDATE ( expression )

Определяет, является ли входное выражение типа datetime или smalldatetime допустимым значением даты или времени.

int

Функция ISDATE детерминирована, только если используется совместно с функцией CONVERT и если заданный параметр стиля CONVERT не равен 0, 100, 9 или 109.

Дата и время — см. также

Раздел

Описание

Функции CAST и CONVERT (Transact-SQL)

Предоставляет сведения о преобразовании значений даты и времени в строковые литералы и обратно, а также в другие форматы даты и времени.

Написание инструкций Transact-SQL, адаптированных к международному использованию

Предоставляет рекомендации относительно переносимости баз данных и приложений баз данных, использующих инструкции Transact-SQL, с одного языка на другой или в многоязычную среду.

Скалярные функции ODBC (Transact-SQL)

Предоставляет сведения о скалярных функциях ODBC, которые могут использоваться в инструкциях Transact-SQL. К ним относятся функции даты и времени ODBC.

См. также

Справочник

Встроенные функции (Transact-SQL)

Типы данных (Transact-SQL)