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


Типы данных и функции даты и времени (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) ядро СУБД получает значения даты и времени с помощью GetSystemTimeAsFileTime() API Windows. Точность зависит от оборудования компьютера и версии Windows, в которой выполняется экземпляр SQL Server. Точность возвращаемых значений этого API-интерфейса задана равной 100 нс. GetSystemTimeAdjustment() Используйте API Windows для определения точности.

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
SYSDATETIME SYSDATETIME() Функция SYSDATETIME возвращает значение datetime2(7), содержащее дату и время компьютера, на котором выполняется экземпляр SQL Server. Возвращаемое значение не содержит смещение часового пояса. datetime2(7) Недетерминированная
SYSDATETIMEOFFSET SYSDATETIMEOFFSET () Функция SYSDATETIMEOFFSET возвращает значение datetimeoffset(7), содержащее дату и время компьютера, на котором выполняется экземпляр SQL Server. Возвращаемое значение содержит смещение часового пояса. datetimeoffset(7) Недетерминированная
SYSUTCDATETIME SYSUTCDATETIME () Функция SYSUTCDATETIME возвращает значение datetime2(7), содержащее дату и время компьютера, на котором выполняется экземпляр SQL Server. SYSUTCDATETIME возвращает значения даты и времени в формате UTC (согласованное универсальное время). datetime2(7) Недетерминированная

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

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

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

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

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
DATEFROMPARTS DATEFROMPARTS ( <year>, <month>, <day> ) Функция DATEFROMPARTS возвращает значение даты для указанного года, месяца и дня. date Детерминированное
DATETIME2FROMPARTS DATETIME2FROMPARTS ( <year>, <month>, <day>, <hour>, <minute>, <seconds>, <fractions>, <precision> ) Функция DATETIME2FROMPARTS возвращает значение datetime2 для указанной даты и времени с указанной точностью. datetime2(precision) Детерминированное
DATETIMEFROMPARTS DATETIMEFROMPARTS ( <year>, <month>, <day>, <hour>, <minute>, <seconds>, <milliseconds> ) Функция DATETIMEFROMPARTS возвращает значение даты и времени для указанной даты и времени. datetime Детерминированное
DATETIMEOFFSETFROMPARTS DATETIMEOFFSETFROMPARTS ( <year>, <month>, <day>, <hour>, <minute>, <seconds>, <fractions>, <hour_offset>, <minute_offset>, <precision> ) Функция DATETIMEOFFSETFROMPARTS возвращает значение datetimeoffset для указанной даты и времени с указанными смещениями и точностью. datetimeoffset(precision) Детерминированное
SMALLDATETIMEFROMPARTS SMALLDATETIMEFROMPARTS ( <year>, <month>, <day>, <hour>, <minute> ) Функция SMALLDATETIMEFROMPARTS возвращает значение smalldatetime для указанной даты и времени. smalldatetime Детерминированное
TIMEFROMPARTS TIMEFROMPARTS ( <hour>, <minute>, <seconds>, <fractions>, <precision> ) Функция TIMEFROMPARTS возвращает значение времени для указанного времени с указанной точностью. time(precision) Детерминированное

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

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

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

Function Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
DATEADD DATEADD (<datepart>, <number>, <date> ) Функция DATEADD возвращает новое значение даты и времени путем добавления интервала в указанную часть даты указанной даты. Тип данных аргумента date Детерминированное
EOMONTH EOMONTH ( <start_date> [ , <month_to_add> ] ) Функция EOMONTH возвращает последний день месяца, содержащий указанную дату, с необязательным смещением. Тип возвращаемого значения — это тип аргумента 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 Детерминированное

Подсказка

Дополнительные сведения и рекомендации по обработке сведений часового пояса в SQL Server с типом данных datetimeoffset см. в разделе AT TIME ZONE.

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

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

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

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