Типы данных и функции даты и времени (Transact-SQL)Date and Time Data Types and Functions (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server (начиная с версии 2012) нетБаза данных SQL Azure нетХранилище данных SQL AzureнетParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2012) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

В разделах этой статьи представлен обзор всех типов данных и функций даты и времени Transact-SQLTransact-SQL.The sections in this topic cover all Transact-SQLTransact-SQL date and time data types and functions.

Типы данных даты и времениDate and Time data types

Типы данных даты и времени Transact-SQLTransact-SQL перечислены в следующей таблице:The Transact-SQLTransact-SQL date and time data types are listed in the following table:

Тип данныхData type ФорматFormat ДиапазонRange ТочностьAccuracy Объем памяти (в байтах)Storage size (bytes) Определяемая пользователем точность в долях секундыUser-defined fractional second precision Смещение часового поясаTime zone offset
timetime чч:мм:сс[.ннннннн]hh:mm:ss[.nnnnnnn] От 00:00:00.0000000 до 23:59:59.999999900:00:00.0000000 through 23:59:59.9999999 100 наносекунд100 nanoseconds от 3 до 53 to 5 ДаYes нетNo
datedate ГГГГ-ММ-ДДYYYY-MM-DD От 0001-01-01 до 31.12.990001-01-01 through 9999-12-31 1 день1 day 33 нетNo нетNo
smalldatetimesmalldatetime ГГГГ-ММ-ДД чч:мм:ссYYYY-MM-DD hh:mm:ss От 01.01.1900 до 06.06.20791900-01-01 through 2079-06-06 1 минута1 minute 44 нетNo нетNo
datetimedatetime ГГГГ-ММ-ДД чч:мм:сс[.ннн]YYYY-MM-DD hh:mm:ss[.nnn] От 01.01.1753 до 31.12.99991753-01-01 through 9999-12-31 0,00333 секунды0.00333 second 88 нетNo нетNo
datetime2datetime2 ГГГГ-ММ-ДД чч:мм:сс[.ннннннн]YYYY-MM-DD hh:mm:ss[.nnnnnnn] От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.99999990001-01-01 00:00:00.0000000 through 9999-12-31 23:59:59.9999999 100 наносекунд100 nanoseconds От 6 до 86 to 8 ДаYes нетNo
datetimeoffsetdatetimeoffset ГГГГ-ММ-ДД чч:мм:сс[.ннннннн] [+|-]чч:ммYYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.9999999 (время в формате UTC)0001-01-01 00:00:00.0000000 through 9999-12-31 23:59:59.9999999 (in UTC) 100 наносекунд100 nanoseconds От 8 до 108 to 10 ДаYes ДаYes

Примечание

Тип данных Transact-SQLTransact-SQL rowversion не относится к типам данных даты и времени.The Transact-SQLTransact-SQL rowversion data type is not a date or time data type. Тип данных timestamp является устаревшим синонимом rowversion.timestamp is a deprecated synonym for rowversion.

Функции даты и времениDate and Time functions

В следующих таблицах приводятся функции даты и времени Transact-SQLTransact-SQL.The following tables list the Transact-SQLTransact-SQL date and time functions. Дополнительные сведения о детерминизме см. в статье Детерминированные и недетерминированные функции.See Deterministic and Nondeterministic Functions for more information about determinism.

Функции, возвращающие значения системной даты и времениFunction That Return System Date and Time Values

Transact-SQLTransact-SQL наследует все значения системной даты и времени от операционной системы компьютера, на котором работает экземпляр SQL ServerSQL Server. derives all system date and time values from the operating system of the computer on which the instance of SQL ServerSQL Server runs.

Высокоточные функции системной даты и времениHigher-Precision System Date and Time Functions

SQL Server 2017SQL Server 2017 получает значения даты и времени с помощью функции GetSystemTimeAsFileTime() Windows API. derives the date and time values through use of the GetSystemTimeAsFileTime() Windows API. Точность зависит от физического оборудования и версии Windows, в которой запущен экземпляр SQL ServerSQL Server.The accuracy depends on the computer hardware and version of Windows on which the instance of SQL ServerSQL Server running. Точность возвращаемых значений этого API-интерфейса задана равной 100 нс.This API has a precision fixed at 100 nanoseconds. Точность может быть определена с помощью метода GetSystemTimeAdjustment() API-интерфейса Windows.Use the GetSystemTimeAdjustment() Windows API to determine the accuracy.

КомпонентFunction СинтаксисSyntax Возвращаемое значениеReturn value Тип возвращаемых данныхReturn data type ДетерминизмDeterminism
SYSDATETIMESYSDATETIME SYSDATETIME ()SYSDATETIME () Возвращает значение типа datetime2(7), которое содержит дату и время компьютера, на котором запущен экземпляр SQL ServerSQL Server.Returns a datetime2(7) value containing the date and time of the computer on which the instance of SQL ServerSQL Server runs. Возвращаемое значение не содержит смещение часового пояса.The returned value does not include the time zone offset. datetime2(7)datetime2(7) НедетерминированнаяNondeterministic
SYSDATETIMEOFFSETSYSDATETIMEOFFSET SYSDATETIMEOFFSET ( )SYSDATETIMEOFFSET ( ) Возвращает значение типа datetimeoffset(7), которое содержит дату и время компьютера, на котором запущен экземпляр SQL ServerSQL Server.Returns a datetimeoffset(7) value containing the date and time of the computer on which the instance of SQL ServerSQL Server runs. Возвращаемое значение содержит смещение часового пояса.The returned value includes the time zone offset. datetimeoffset(7)datetimeoffset(7) НедетерминированнаяNondeterministic
SYSUTCDATETIMESYSUTCDATETIME SYSUTCDATETIME ( )SYSUTCDATETIME ( ) Возвращает значение типа datetime2(7), которое содержит дату и время компьютера, на котором запущен экземпляр SQL ServerSQL Server.Returns a datetime2(7) value containing the date and time of the computer on which the instance of SQL ServerSQL Server is running. Функция возвращает значения даты и времени в формате UTC.The function returns the date and time values as UTC time (Coordinated Universal Time). datetime2(7)datetime2(7) НедетерминированнаяNondeterministic

Функции системной даты и времени меньшей точностиLower-Precision System Date and Time Functions

КомпонентFunction СинтаксисSyntax Возвращаемое значениеReturn value Тип возвращаемых данныхReturn data type ДетерминизмDeterminism
CURRENT_TIMESTAMPCURRENT_TIMESTAMP CURRENT_TIMESTAMPCURRENT_TIMESTAMP Возвращает значение типа datetime, которое содержит дату и время компьютера, на котором запущен экземпляр SQL ServerSQL Server.Returns a datetime value containing the date and time of the computer on which the instance of SQL ServerSQL Server runs. Возвращаемое значение не содержит смещение часового пояса.The returned value does not include the time zone offset. datetimedatetime НедетерминированнаяNondeterministic
GETDATEGETDATE GETDATE ( )GETDATE ( ) Возвращает значение типа datetime, которое содержит дату и время компьютера, на котором запущен экземпляр SQL ServerSQL Server.Returns a datetime value containing the date and time of the computer on which the instance of SQL ServerSQL Server runs. Возвращаемое значение не содержит смещение часового пояса.The returned value does not include the time zone offset. datetimedatetime НедетерминированнаяNondeterministic
GETUTCDATEGETUTCDATE GETUTCDATE ( )GETUTCDATE ( ) Возвращает значение типа datetime, которое содержит дату и время компьютера, на котором запущен экземпляр SQL ServerSQL Server.Returns a datetime value containing the date and time of the computer on which the instance of SQL ServerSQL Server runs. Функция возвращает значения даты и времени в формате UTC.The function returns the date and time values as UTC time (Coordinated Universal Time). datetimedatetime НедетерминированнаяNondeterministic

Функции, возвращающие компоненты даты и времениFunctions That Return Date and Time Parts

КомпонентFunction СинтаксисSyntax Возвращаемое значениеReturn value Тип возвращаемых данныхReturn data type ДетерминизмDeterminism
DATENAMEDATENAME DATENAME ( datepart , date )DATENAME ( datepart , date ) Возвращает строку символов, представляющую указанную часть datepart заданного типа date.Returns a character string representing the specified datepart of the specified date. nvarcharnvarchar НедетерминированнаяNondeterministic
DATEPARTDATEPART DATEPART ( datepart , date )DATEPART ( datepart , date ) Возвращает целое число, представляющее указанную часть datepart заданного типа date.Returns an integer representing the specified datepart of the specified date. intint НедетерминированнаяNondeterministic
DAYDAY DAY ( date )DAY ( date ) Возвращает целое число, представляющее часть дня указанного типа date.Returns an integer representing the day part of the specified date. intint ДетерминированноеDeterministic
MONTHMONTH MONTH ( date )MONTH ( date ) Возвращает целое число, представляющее часть месяца указанного типа date.Returns an integer representing the month part of a specified date. intint ДетерминированноеDeterministic
YEARYEAR YEAR ( date )YEAR ( date ) Возвращает целое число, представляющее часть года указанного типа date.Returns an integer representing the year part of a specified date. intint ДетерминированноеDeterministic

Функции, возвращающие значения даты и времени из их компонентовFunctions That Return Date and Time Values from Their Parts

КомпонентFunction СинтаксисSyntax Возвращаемое значениеReturn value Тип возвращаемых данныхReturn data type ДетерминизмDeterminism
DATEFROMPARTSDATEFROMPARTS DATEFROMPARTS ( year, month, day )DATEFROMPARTS ( year, month, day ) Возвращает значение date, соответствующее указанному числу, месяцу и году.Returns a date value for the specified year, month, and day. datedate ДетерминированноеDeterministic
DATETIME2FROMPARTSDATETIME2FROMPARTS DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision)DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision) Возвращает значение datetime2, соответствующее указанной дате и времени с заданной точностью.Returns a datetime2 value for the specified date and time, with the specified precision. datetime2( precision )datetime2( precision ) ДетерминированноеDeterministic
DATETIMEFROMPARTSDATETIMEFROMPARTS DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds)DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds) Возвращает значение datetime, соответствующее указанной дате и времени.Returns a datetime value for the specified date and time. datetimedatetime ДетерминированноеDeterministic
DATETIMEOFFSETFROMPARTSDATETIMEOFFSETFROMPARTS DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision)DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision) Возвращает значение datetimeoffset для указанных даты и времени с указанными смещением и точностью.Returns a datetimeoffset value for the specified date and time, with the specified offsets and precision. datetimeoffset( precision )datetimeoffset( precision ) ДетерминированноеDeterministic
SMALLDATETIMEFROMPARTSSMALLDATETIMEFROMPARTS SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute )SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute ) Возвращает значение smalldatetime, соответствующее указанной дате и времени.Returns a smalldatetime value for the specified date and time. smalldatetimesmalldatetime ДетерминированноеDeterministic
TIMEFROMPARTSTIMEFROMPARTS TIMEFROMPARTS ( hour, minute, seconds, fractions, precision )TIMEFROMPARTS ( hour, minute, seconds, fractions, precision ) Возвращает значение time, соответствующее указанному времени с заданной точностью.Returns a time value for the specified time, with the specified precision. time( precision )time( precision ) ДетерминированноеDeterministic

Функции, возвращающие значения разности даты и времениFunctions That Return Date and Time Difference Values

КомпонентFunction СинтаксисSyntax Возвращаемое значениеReturn value Тип возвращаемых данныхReturn data type ДетерминизмDeterminism
DATEDIFFDATEDIFF DATEDIFF ( datepart , startdate , enddate )DATEDIFF ( datepart , startdate , enddate ) Возвращает количество границ даты или времени datepart, пересекающихся между двумя указанными датами.Returns the number of date or time datepart boundaries, crossed between two specified dates. intint ДетерминированноеDeterministic
DATEDIFF_BIGDATEDIFF_BIG DATEDIFF_BIG ( datepart , startdate , enddate )DATEDIFF_BIG ( datepart , startdate , enddate ) Возвращает количество границ даты или времени datepart, пересекающихся между двумя указанными датами.Returns the number of date or time datepart boundaries, crossed between two specified dates. bigintbigint ДетерминированноеDeterministic

Функции, изменяющие значения даты и времениFunctions That Modify Date and Time Values

КомпонентFunction СинтаксисSyntax Возвращаемое значениеReturn value Тип возвращаемых данныхReturn data type ДетерминизмDeterminism
DATEADDDATEADD DATEADD (datepart , number , date )DATEADD (datepart , number , date ) Возвращает новое значение datetime, добавляя интервал к указанной части datepart заданной даты date.Returns a new datetime value by adding an interval to the specified datepart of the specified date. Тип данных аргумента dateThe data type of the date argument ДетерминированноеDeterministic
EOMONTHEOMONTH EOMONTH ( start_date [, month_to_add ] )EOMONTH ( start_date [, month_to_add ] ) Возвращает последний день месяца, содержащего указанную дату, с необязательным смещением.Returns the last day of the month containing the specified date, with an optional offset. Тип возвращаемого значения — это тип аргумента start_date или тип данных date.Return type is the type of the start_date argument, or alternately, the date data type. ДетерминированноеDeterministic
SWITCHOFFSETSWITCHOFFSET SWITCHOFFSET (DATETIMEOFFSET, time_zone)SWITCHOFFSET (DATETIMEOFFSET , time_zone) Функция SWITCHOFFSET изменяет смещение часового пояса для значения DATETIMEOFFSET и сохраняет значение UTC.SWITCHOFFSET changes the time zone offset of a DATETIMEOFFSET value, and preserves the UTC value. Значение datetimeoffset с точностью в долях секунд, заданной в аргументе DATETIMEOFFSETdatetimeoffset with the fractional precision of the DATETIMEOFFSET ДетерминированноеDeterministic
TODATETIMEOFFSETTODATETIMEOFFSET TODATETIMEOFFSET (expression , time_zone)TODATETIMEOFFSET (expression , time_zone) TODATETIMEOFFSET преобразует значение типа datetime2 в значение типа datetimeoffset.TODATETIMEOFFSET transforms a datetime2 value into a datetimeoffset value. Функция TODATETIMEOFFSET преобразует значение datetime2 в местное время для указанного time_zone.TODATETIMEOFFSET interprets the datetime2 value in local time, for the specified time_zone. Значение datetimeoffset с точностью в долях секунд, заданной в аргументе datetimedatetimeoffset with the fractional precision of the datetime argument ДетерминированноеDeterministic

Функции, устанавливающие или возвращающие функции формата сеансаFunctions That Set or Return Session Format Functions

КомпонентFunction СинтаксисSyntax Возвращаемое значениеReturn value Тип возвращаемых данныхReturn data type ДетерминизмDeterminism
@@DATEFIRST@@DATEFIRST @@DATEFIRST@@DATEFIRST Возвращает текущее значение параметра SET DATEFIRST для сеанса.Returns the current value, for the session, of SET DATEFIRST. tinyinttinyint НедетерминированнаяNondeterministic
SET DATEFIRSTSET DATEFIRST SET DATEFIRST { number | *@***number_var }SET DATEFIRST { number | *@***number_var } Устанавливает первый день недели в виде числа от 1 до 7.Sets the first day of the week to a number from 1 through 7. НеприменимоNot applicable НеприменимоNot applicable
SET DATEFORMATSET DATEFORMAT SET DATEFORMAT { format | *@***format_var }SET DATEFORMAT { format | *@***format_var } Задает порядок составляющих даты (месяц/день/год) для ввода данных типа datetime или smalldatetime.Sets the order of the dateparts (month/day/year) for entering datetime or smalldatetime data. НеприменимоNot applicable НеприменимоNot applicable
@@LANGUAGE@@LANGUAGE @@LANGUAGE@@LANGUAGE Возвращает название использующегося в настоящий момент языка.Returns the name of the language in current used. Функция @@LANGUAGE не является функцией даты или времени.@@LANGUAGE is not a date or time function. Однако на данные, выводимые функциями даты, могут повлиять настройки языка.However, the language setting can affect the output of date functions. НеприменимоNot applicable НеприменимоNot applicable
SET LANGUAGESET LANGUAGE SET LANGUAGE { [ N ] 'language' | *@***language_var }SET LANGUAGE { [ N ] 'language' | *@***language_var } Устанавливает языковую среду сеанса и системных сообщений.Sets the language environment for the session and system messages. SET LANGUAGE не является функцией даты или времени.SET LANGUAGE is not a date or time function. Однако на данные, выводимые функциями даты, влияет параметр языка.However, the language setting affects the output of date functions. НеприменимоNot applicable НеприменимоNot applicable
sp_helplanguagesp_helplanguage sp_helplanguage [ [ @language = ] 'language' ]sp_helplanguage [ [ @language = ] 'language' ] Возвращает сведения о формате даты всех поддерживаемых языков.Returns information about date formats of all supported languages. sp_helplanguage не является хранимой процедурой даты или времени.sp_helplanguage is not a date or time stored procedure. Однако на данные, выводимые функциями даты, влияет параметр языка.However, the language setting affects the output of date functions. НеприменимоNot applicable НеприменимоNot applicable

Функции, проверяющие значения даты и времениFunctions That Validate Date and Time Values

КомпонентFunction СинтаксисSyntax Возвращаемое значениеReturn value Тип возвращаемых данныхReturn data type ДетерминизмDeterminism
ISDATEISDATE ISDATE ( expression )ISDATE ( expression ) Определяет, является ли входное выражение типа datetime или smalldatetime допустимым значением даты или времени.Determines whether a datetime or smalldatetime input expression has a valid date or time value. intint Функция ISDATE детерминирована, только если используется совместно с функцией CONVERT и если заданный параметр стиля CONVERT не равен 0, 100, 9 или 109.ISDATE is deterministic only used with the CONVERT function, when the CONVERT style parameter is specified, and when style is not equal to 0, 100, 9, or 109.

Дата и время — см. такжеDate and time-related topics

РазделTopic ОписаниеDescription
Функции CAST и CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL) Предоставляет сведения о преобразовании значений даты и времени в строковые литералы и обратно, а также в другие форматы даты и времени.Provides information about the conversion of date and time values to and from string literals, and other date and time formats.
Написание инструкций Transact-SQL, адаптированных к международному использованиюWrite International Transact-SQL Statements Предоставляет рекомендации относительно переносимости баз данных и приложений баз данных, использующих инструкции Transact-SQLTransact-SQL, с одного языка на другой или в многоязычную среду.Provides guidelines for portability of databases and database applications that use Transact-SQLTransact-SQL statements from one language to another, or that support multiple languages.
Скалярные функции ODBC (Transact-SQL)ODBC Scalar Functions (Transact-SQL) Предоставляет сведения о скалярных функциях ODBC, которые могут использоваться в инструкциях Transact-SQLTransact-SQL.Provides information about ODBC scalar functions available for use in Transact-SQLTransact-SQL statements. К ним относятся функции даты и времени ODBC.This includes ODBC date and time functions.
AT TIME ZONE (Transact-SQL)AT TIME ZONE (Transact-SQL) Обеспечивает преобразование часовых поясов.Provides time zone conversion.

См. также разделSee also

ФункцииFunctions
Типы данных (Transact-SQL)Data Types (Transact-SQL)