W SQL Server możesz użyć TODATETIMEOFFSET()
funkcja zwracająca przesunięcie daty i godziny wartość, która jest tłumaczona z datetime2 wyrażenie. Przyjmuje dwa argumenty; datę i przesunięcie, które chcesz zastosować do tej daty.
Poniżej znajdują się przykłady użycia.
Składnia
Składnia TODATETIMEOFFSET()
idzie tak:
TODATETIMEOFFSET ( expression , time_zone )
Gdzie expression
to wyrażenie, które zamienia się na datetime2 wartość i time_zone
to strefa czasowa, którą chcesz zastosować do tego wyrażenia (data).
Możesz podać strefę czasową w minutach lub godzinach. Jeśli podasz go w ciągu kilku minut, użyj liczby całkowitej (np. -120
), w przeciwnym razie, aby podać go w godzinach, użyj ciągu (np. '+04.00'
). Zakres strefy czasowej wynosi od +14 do -14 (godzin).
Ponadto podana data jest interpretowana w czasie lokalnym dla określonej strefy czasowej.
Przykład 1
Oto podstawowy przykład użycia:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;
Wynik:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 +08:00
Przykład 2 – Wartość ujemna
To jest to samo, co w poprzednim przykładzie, z tą różnicą, że zamiast tego używam wartości ujemnej:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;
Wynik:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -08:00
Przykład 3 – Używanie zmiennej datetime2
W tym przykładzie jawnie ustawiłem zmienną z datetime2 wartość, a następnie zastosuj TODATETIMEOFFSET()
do tej wartości i porównaj wartości:
DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Wynik:
Original Date +08:00 --------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00
Jak widać w tym przykładzie (i poprzednich), oryginalna wartość daty nie ma żadnej daty/godziny informacje o przesunięciu (ponieważ jest to data/godzina2 wartość), ale po uruchomieniu go przez TODATETIMEOFFSET()
funkcja, otrzymujemy przesunięcie daty i godziny typ danych.
Przykład 4 – Korzystanie ze zmiennej przesunięcia daty i czasu
Jest to podobne do poprzedniego przykładu, z tą różnicą, że pierwotna data jest ustawiona jako przesunięcie daty i godziny wartość:
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Wynik:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00
Przykład 5 – Korzystanie z bieżącej daty/godziny
W tym przykładzie przekazuję SYSDATETIMEOFFSET()
pełni funkcję wyrażenia daty. Ta funkcja generuje bieżącą datę/czas komputera, na którym działa instancja SQL Server:
SELECT SYSDATETIMEOFFSET() AS 'Current Date', TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Wynik:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00
Przykład 6 – Podawanie przesunięcia strefy czasowej jako liczby całkowitej
Jak wspomniano, możesz również podać przesunięcie strefy czasowej jako liczbę całkowitą zamiast ciągu:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;
Wynik:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -03:00