DATETIMEOFFSETFROMPARTS (Transact-SQL)

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Возвращает значение datetimeoffset для указанных аргументов даты и времени. Точность возвращаемого значения определяется аргументом precision, а смещение — аргументами offset.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

year
Целочисленное выражение, задающее год.

month
Целочисленное выражение, задающее месяц.

day
Целочисленное выражение, задающее день.

hour
Целочисленное выражение, задающее часы.

minute
Целочисленное выражение, задающее минуты.

seconds
Целочисленное выражение, задающее секунды.

fractions
Целочисленное выражение, задающее дробное значение секунд.

hour_offset
Целочисленное выражение, задающее часть смещения часового пояса в часах.

minute_offset
Целочисленное выражение, задающее часть смещения часового пояса в минутах.

precision
Целочисленное литеральное значение, которое определяет точность значения datetimeoffset, возвращаемого функцией DATETIMEOFFSETFROMPARTS.

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

datetimeoffset( precision )

Замечания

Функция DATETIMEOFFSETFROMPARTS возвращает полностью инициализированный тип данных datetimeoffset. Аргументы смещения представляют смещение часового пояса. Если аргументы смещения пропущены, в DATETIMEOFFSETFROMPARTS предполагается, что смещение часового пояса равно 00:00, то есть отсутствует. Если аргументы смещения указаны, DATETIMEOFFSETFROMPARTS требует наличия значений обоих аргументов, причем оба должны быть или положительными, или отрицательными. Если minute_offset указывается без значения hour_offset, DATETIMEOFFSETFROMPARTS вызывает ошибку. Если другие аргументы имеют недопустимые значения, DATETIMEOFFSETFROMPARTS вызывает ошибку. DATETIMEOFFSETFROMPARTS возвращает NULL, если хотя бы один обязательный аргумент имеет значение NULL. Но если precision имеет значение NULL, DATETIMEOFFSETFROMPARTS вызывает ошибку.

Аргумент fractions зависит от аргумента precision. Например, если значение precision равно 7, каждая дробная часть представляет 100 наносекунд, а если значение precision равно 3, каждая дробная часть представляет миллисекунду. Если значение precision равно нулю, значение fractions также должно быть равно нулю. В противном случае DATETIMEOFFSETFROMPARTS вызывает ошибку.

Эта функция может быть удалена на серверы SQL Server 2012 (11.x) и выше. Он не удален на серверы с версией ниже SQL Server 2012 (11.x).

Примеры

А. Пример без долей секунды

SELECT DATETIMEOFFSETFROMPARTS ( 2010, 12, 31, 14, 23, 23, 0, 12, 0, 7 ) AS Result;  

Вот результирующий набор.

Result  
----------------------------------
2010-12-31 14:23:23.0000000 +12:00  
  
(1 row(s) affected)  

B. Пример с долями секунд

В этом примере показано использование параметров fractions и precision:

  1. Если параметр fractions имеет значение 5, а параметр precision — значение 1, то значение параметра fractions представляет 5/10 секунды.

  2. Если параметр fractions имеет значение 50, а параметр precision — значение 2, то значение параметра fractions представляет 50/100 секунды.

  3. Если параметр fractions имеет значение 500, а параметр precision — значение 3, то значение параметра fractions представляет 500/1000 секунды.

SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00, 5, 12, 30, 1 );  
SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00, 50, 12, 30, 2 );  
SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00, 500, 12, 30, 3 );  
GO  

Вот результирующий набор.

----------------------------------  
2011-08-15 14:30:00.5 +12:30  
  
(1 row(s) affected)  
  
----------------------------------  
2011-08-15 14:30:00.50 +12:30  
  
(1 row(s) affected)  
  
----------------------------------  
2011-08-15 14:30:00.500 +12:30  
  
(1 row(s) affected)  

См. также

datetimeoffset (Transact-SQL)
AT TIME ZONE (Transact-SQL)