T-SQL има функция, наречена DATETIMEOFFSETFROMPARTS()
което ви позволява да получите отместване на датата и времето стойност от различните отделни части на дата. По-конкретно, той връща datetimeoffset стойност за посочените дата и час и с посочените отмествания и точност.
Примери за тази функция по-долу.
Синтаксис
Синтаксисът е така:
DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision )
Къде:
- Първите 7 аргумента са целочислени изрази, посочващи тази конкретна част от дата/час.
hour_offset
Аргументът е целочислен израз, указващ часовата част от изместването на часовата зона.minute_offset
е целочислен израз, указващ минутната част от изместването на часовата зона.precision
аргументът е целочислен литерал, указващ точността на datetimeoffset стойност, която трябва да бъде върната. Тази стойност всъщност определя мащаба (т.е. броя на цифрите вдясно от десетичната запетая).
Пример
Ето пример за употреба.
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, 23, 35, 29, 500, 12, 30, 4 ) AS Result;
Резултат:
Result ---------------------------------- 2021-05-10 23:35:29.0500 +12:30
Невалидни аргументи
Трябва да се уверите, че всички аргументи са валидни, в противен случай ще получите грешка. Ето пример за предоставяне на част от час извън обхвата (25). Часовата част може да бъде само между 0 и 24.
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, 25, 35, 29, 500, 12, 30, 4 ) AS Result;
Резултат:
Cannot construct data type datetimeoffset, some of the arguments have values which are not valid.
Брой аргументи
Трябва да предоставите правилния брой аргументи (10). Ако не го направите, ще получите грешка.
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10 ) AS Result;
Резултат:
The datetimeoffsetfromparts function requires 10 argument(s).
Нулеви аргументи
Ако някой от първите 9 аргумента е нулев, резултатът е NULL
:
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, NULL, 35, 29, 500, 12, 30, 4 ) AS Result;
Резултат:
Result ---------------------------------- NULL
Ако обаче последният (прецизен) аргумент е нулев, тогава се връща грешка:
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, 23, 35, 29, 500, 12, 30, NULL ) AS Result;
Резултат:
Scale argument is not valid. Valid expressions for data type datetimeoffset scale argument are integer constants and integer constant expressions.
Вижте също DATETIME2FROMPARTS() Примери в SQL Server (T-SQL) за връщане на datetime2 стойност (без отместването).