W SQL Server DATETIME2FROMPARTS()
funkcja działa podobnie do DATETIMEFROMPARTS()
funkcja, z tą różnicą, że przyjmuje 8 argumentów i zwraca datetime2 wartość. DATETIMEFROMPARTS()
z drugiej strony funkcja przyjmuje tylko 7 argumentów i zwraca datę-godzinę wartość.
Zasadniczo podajesz wszystkie części daty/godziny, a ta funkcja zwróci datetime2 wartość na podstawie dostarczonych części.
Składnia
Po pierwsze, oto składnia:
DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision )
Gdzie każdy z pierwszych 7 argumentów jest wyrażeniem całkowitym, które określa tę część daty. Na przykład year
jest liczbą całkowitą, która określa część daty związaną z rokiem.
8. argument jest wyrażeniem całkowitym, które umożliwia zdefiniowanie dokładności zwracanej wartości. Ta wartość określa skalę (tj. liczbę cyfr na prawo od miejsca dziesiętnego).
Przykład
Oto przykład użycia:
SELECT DATETIME2FROMPARTS( 2021, 05, 10, 23, 35, 29, 500, 4 ) AS Result;
Wynik:
+--------------------------+ | Result | |--------------------------| | 2021-05-10 23:35:29.0500 | +--------------------------+
Nieprawidłowe wartości
Wszystkie argumenty muszą być prawidłowymi wartościami. Na przykład nie możesz określić miesiąca 13 lub wartości minut 61.
Oto przykład, w którym określam wartość 13 miesiąca:
SELECT DATETIME2FROMPARTS( 2021, 13, 10, 23, 35, 29, 500, 4 ) AS Result;
Wynik:
Cannot construct data type datetime2, some of the arguments have values which are not valid.
Liczba argumentów
Musisz także podać poprawną liczbę argumentów (8):
SELECT DATETIME2FROMPARTS( 2021, 05, 10 ) AS Result;
Wynik:
The datetime2fromparts function requires 8 argument(s).
Wartości puste
Jeśli podasz wartość null dla dowolnego z pierwszych 7 argumentów, wynikiem będzie NULL:
SELECT DATETIME2FROMPARTS( 2021, 05, 10, NULL, 35, 29, 500, 4 ) AS Result;
Wynik:
+----------+ | Result | |----------| | NULL | +----------+
Jednak podanie wartości null dla ósmego argumentu (który określa precyzję/skalę) powoduje błąd:
SELECT DATETIME2FROMPARTS( 2021, 05, 10, 23, 35, 29, 500, NULL ) AS Result;
Wynik:
Scale argument is not valid. Valid expressions for data type datetime2 scale argument are integer constants and integer constant expressions.