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


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

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

В разделах этой статьи представлен обзор всех типов данных и функций даты и времени 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 Нет Нет
smalldatetime гггг-ММ-дд ЧЧ:мм:сс От 01.01.1900 до 06.06.2079 1 минута 4 Нет Нет
datetime гггг-ММ-дд HH:mm:ss[.nnn] От 01.01.1753 до 31.12.9999 0,00333 секунды 8 Нет Нет
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 SYSDATE timeoffset ( ) Возвращает значение 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 ( дата, номер,дата, происхождение ) Возвращает значение даты и времени, соответствующее началу каждого контейнера даты и времени, из временной метки, определенной параметром origin или исходным значением по умолчанию 1900-01-01 00:00:00.000, если параметр orgin не указан. Тип возвращаемого значения зависит от типа аргумента, переданного в параметре date. Недетерминированная
DATENAME НАЗВАНИЕ ДАТЫ (дата,дата) Возвращает строку символов, представляющую указанную часть datepart заданного типа date. nvarchar Недетерминированная
DATEPART DATEPART ( datepart, date ) Возвращает целое число, представляющее указанную часть datepart заданного типа date. int Недетерминированная
DATETRUNC DATETRUNC (дата,дата) Эта функция возвращает входную дату date, усеченную до указанной части datepart. Тип возвращаемого значения зависит от типа аргумента, переданного в параметре date. Недетерминированная
DAY ДЕНЬ ( дата ) Возвращает целое число, представляющее часть дня указанного типа date. int Детерминированное
MONTH МЕСЯЦ ( дата ) Возвращает целое число, представляющее часть месяца указанного типа date. int Детерминированное
YEAR ГОД ( дата ) Возвращает целое число, представляющее часть года указанного типа date. int Детерминированное

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
DATEFROMPARTS DATEFROMPARTS ( год, месяц, день ) Возвращает значение 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 ( год, месяц, день, час, минута ) Возвращает значение smalldatetime, соответствующее указанной дате и времени. smalldatetime Детерминированное
TIMEFROMPARTS ВРЕМЯ от частей ( час, минута, секунды, дроби, точность ) Возвращает значение time, соответствующее указанному времени с заданной точностью. time(precision) Детерминированное

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

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

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
DATEADD DATEADD (дата,номер, дата ) Возвращает новое значение 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 { number | @number_var } Устанавливает первый день недели в виде числа от 1 до 7. Неприменимо Неприменимо
ФОРМАТ УСТАНОВКИ ДАТЫ SET DATEFORMAT { format | @format_var } Задает порядок составляющих даты (месяц/день/год) для ввода данных типа datetime или smalldatetime. Неприменимо Неприменимо
@@LANGUAGE @@LANGUAGE Возвращает название использующегося в настоящий момент языка. @@LANGUAGE не является функцией даты или времени. Однако на данные, выводимые функциями даты, могут повлиять настройки языка. Неприменимо Неприменимо
ЯЗЫК МНОЖЕСТВ SET LANGUAGE { [ N ] 'language' | @language_var } Устанавливает языковую среду сеанса и системных сообщений. SET LANGUAGE не является функцией даты или времени. Однако на данные, выводимые функциями даты, влияет параметр языка. Неприменимо Неприменимо
sp_helplanguage sp_helplanguage [ @language = ] "язык" ] Возвращает сведения о формате даты всех поддерживаемых языков. sp_helplanguage не является хранимой процедурой даты или времени. Однако на данные, выводимые функциями даты, влияет параметр языка. Неприменимо Неприменимо

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
ISDATE ISDATE ( выражение ) Определяет, является ли входное выражение типа 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 Обеспечивает преобразование часовых поясов.