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