Поделиться через


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

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics

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

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

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

Тип данных Формат Диапазон Правильность Объем памяти (в байтах) Определяемая пользователем точность в долях секунды Смещение часового пояса
time HH:mm:ss[.nnnnnnnnn] От 00:00:00.0000000 до 23:59:59.9999999 100 наносекунд от 3 до 5 Да Нет
date гггг-ММ-дд От 0001-01-01 до 31.12.99 1 день 3 No No
smalldatetime гггг-ММ-дд ЧЧ:мм:сс От 01.01.1900 до 06.06.2079 1 минута 4 Нет No
datetime гггг-ММ-дд HH:mm:ss[.nnn] От 01.01.1753 до 31.12.9999 0,00333 секунды 8 No No
datetime2 гггг-ММ-дд HH:mm:ss[.nnnnnnnnn] От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.9999999 100 наносекунд От 6 до 8 Да Нет
datetimeoffset гггг-ММ-дд HH:mm:ss[.nnnnn] [+|-]HH:mm От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.9999999 (время в формате UTC) 100 наносекунд 8 - 10 Да Да

Примечание.

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

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

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

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

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

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

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
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) Недетерминированная

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
CURRENT_TIMESTAMP CURRENT_TIMESTAMP Возвращает значение даты и времени, содержащее дату и время компьютера, на котором выполняется экземпляр SQL Server. Возвращаемое значение не содержит смещение часового пояса. datetime Недетерминированная
GETDATE GETDATE ( ) Возвращает значение даты и времени, содержащее дату и время компьютера, на котором выполняется экземпляр SQL Server. Возвращаемое значение не содержит смещение часового пояса. datetime Недетерминированная
GETUTCDATE GETUTCDATE ( ) Возвращает значение даты и времени, содержащее дату и время компьютера, на котором выполняется экземпляр SQL Server. Функция возвращает значения даты и времени в формате UTC. datetime Недетерминированная
CURRENT_DATE CURRENT_DATE Возвращает значение даты, содержащее только дату компьютера, на котором выполняется экземпляр ядро СУБД. Возвращаемое значение не включает время и смещение часового пояса. date Недетерминированная

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
DATE_BUCKET DATE_BUCKET ( datepart, number, date, origin ) Возвращает значение даты и времени, соответствующее началу каждого контейнера даты и времени, из временной метки, определенной параметром origin или исходным значением по умолчанию 1900-01-01 00:00:00.000, если параметр orgin не указан. Тип возвращаемого значения зависит от типа аргумента, переданного в параметре date. Недетерминированная
DATENAME DATENAME ( datepart, date ) Возвращает строку символов, представляющую указанную часть datepart заданного типа date. nvarchar Недетерминированная
DATEPART DATEPART ( datepart, date ) Возвращает целое число, представляющее указанную часть datepart заданного типа date. int Недетерминированная
DATETRUNC DATETRUNC ( datepart, date ) Эта функция возвращает входную дату date, усеченную до указанной части datepart. Тип возвращаемого значения зависит от типа аргумента, переданного в параметре date. Недетерминированная
DAY DAY ( date ) Возвращает целое число, представляющее часть дня указанного типа date. int Детерминированное
MONTH MONTH ( date ) Возвращает целое число, представляющее часть месяца указанного типа date. int Детерминированное
YEAR YEAR ( date ) Возвращает целое число, представляющее часть года указанного типа date. int Детерминированное

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
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 для указанных даты и времени с указанными смещением и точностью. datetimeoffset(precision) Детерминированное
SMALLDATETIMEFROMPARTS SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute ) Возвращает значение smalldatetime, соответствующее указанной дате и времени. smalldatetime Детерминированное
TIMEFROMPARTS TIMEFROMPARTS ( hour, minute, seconds, fractions, precision ) Возвращает значение time, соответствующее указанному времени с заданной точностью. time(precision) Детерминированное

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
DATEDIFF DATEDIFF ( datepart, startdate, enddate ) Возвращает количество границ даты или времени datepart, пересекающихся между двумя указанными датами. int Детерминированное
DATEDIFF_BIG DATEDIFF_BIG ( datepart, startdate, enddate ) Возвращает количество границ даты или времени datepart, пересекающихся между двумя указанными датами. bigint Детерминированное

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
DATEADD DATEADD (datepart, number, date ) Возвращает новое значение datetime, добавляя интервал к указанной части datepart заданной даты date. Тип данных аргумента date Детерминированное
EOMONTH EOMONTH ( start_date [ , month_to_add ] ) Возвращает последний день месяца, содержащего указанную дату, с необязательным смещением. Тип возвращаемого значения — это тип аргумента start_date или тип данных date. Детерминированное
SWITCHOFFSET SWITCHOFFSET (DATETIMEOFFSET, time_zone) Функция SWITCHOFFSET изменяет смещение часового пояса для значения DATETIMEOFFSET и сохраняет значение UTC. Значение datetimeoffset с точностью в долях секунд, заданной в аргументе DATETIMEOFFSET Детерминированное
TODATETIMEOFFSET TODATETIMEOFFSET (expression, time_zone) TODATETIMEOFFSET преобразует значение типа datetime2 в значение типа datetimeoffset. Функция TODATETIMEOFFSET преобразует значение datetime2 в местное время для указанного time_zone. Значение datetimeoffset с точностью в долях секунд, заданной в аргументе datetime Детерминированное

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
@@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 = ] "язык" ] Возвращает сведения о формате даты всех поддерживаемых языков. sp_helplanguage не является хранимой процедурой даты или времени. Однако на данные, выводимые функциями даты, влияет параметр языка. Неприменимо Неприменимо

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
ISDATE ISDATE ( expression ) Определяет, является ли входное выражение типа datetime или smalldatetime допустимым значением даты или времени. int Функция ISDATE детерминирована, только если используется совместно с функцией CONVERT и если заданный параметр стиля CONVERT не равен 0, 100, 9 или 109.
Статья Описание
FORMAT Возвращает значение в указанных формате и культуре (не обязательно). Для выполнения форматирования значения даты, времени и чисел с учетом локали в виде строк используется функция FORMAT.
CAST и CONVERT Предоставляет сведения о преобразовании значений даты и времени в строковые литералы и обратно, а также в другие форматы даты и времени.
Написание инструкций Transact-SQL, адаптированных к международному использованию Предоставляет рекомендации относительно переносимости баз данных и приложений баз данных, использующих инструкции Transact-SQL, с одного языка на другой или в многоязычную среду.
Скалярные функции ODBC Предоставляет сведения о скалярных функциях ODBC, которые могут использоваться в инструкциях Transact-SQL. Включает функции даты и времени ODBC.
AT TIME ZONE Обеспечивает преобразование часовых поясов.