T-SQL ma funkcję o nazwie DATETIMEOFFSETFROMPARTS()
który pozwala uzyskać przesunięcie daty i godziny wartość z różnych oddzielnych części daty. W szczególności zwraca przesunięcie daty i godziny wartość dla określonej daty i czasu oraz z określonymi przesunięciami i precyzją.
Przykłady tej funkcji poniżej.
Składnia
Składnia wygląda tak:
DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision )
Gdzie:
- Pierwszych 7 argumentów to wyrażenia całkowite określające tę konkretną część daty/czasu.
hour_offset
argument jest wyrażeniem całkowitym określającym część godzinową przesunięcia strefy czasowej.minute_offset
jest wyrażeniem całkowitym określającym część minutową przesunięcia strefy czasowej.precision
argument jest literałem całkowitym określającym dokładność przesunięcie daty i godziny wartość do zwrócenia. Ta wartość faktycznie określa skalę (tj. liczbę cyfr na prawo od miejsca dziesiętnego).
Przykład
Oto przykład użycia.
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, 23, 35, 29, 500, 12, 30, 4 ) AS Result;
Wynik:
Result ---------------------------------- 2021-05-10 23:35:29.0500 +12:30
Nieprawidłowe argumenty
Musisz upewnić się, że wszystkie argumenty są prawidłowe, w przeciwnym razie otrzymasz błąd. Oto przykład podania części godzinowej poza zakresem (25). Część godzinowa może wynosić tylko od 0 do 24.
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, 25, 35, 29, 500, 12, 30, 4 ) AS Result;
Wynik:
Cannot construct data type datetimeoffset, some of the arguments have values which are not valid.
Liczba argumentów
Musisz podać poprawną liczbę argumentów (10). Jeśli tego nie zrobisz, pojawi się błąd.
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10 ) AS Result;
Wynik:
The datetimeoffsetfromparts function requires 10 argument(s).
Argumenty zerowe
Jeśli którykolwiek z pierwszych 9 argumentów jest pusty, wynikiem jest NULL
:
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, NULL, 35, 29, 500, 12, 30, 4 ) AS Result;
Wynik:
Result ---------------------------------- NULL
Jeśli jednak ostatni (precyzyjny) argument ma wartość null, zwracany jest błąd:
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, 23, 35, 29, 500, 12, 30, NULL ) AS Result;
Wynik:
Scale argument is not valid. Valid expressions for data type datetimeoffset scale argument are integer constants and integer constant expressions.
Zobacz też Przykłady DATETIME2FROMPARTS() w SQL Server (T-SQL) dotyczące zwracania datetime2 wartość (bez przesunięcia).