W SQL Server, SWITCHOFFSET()
funkcja może służyć do zwracania przesunięcia daty i godziny wartość, która została zmieniona z zapisanego przesunięcia strefy czasowej na określone przesunięcie nowej strefy czasowej.
Poniżej znajdują się przykłady działania tej funkcji.
Składnia
Po pierwsze, oto jak idzie składnia:
SWITCHOFFSET ( DATETIMEOFFSET, time_zone )
Gdzie DATETIMEOFFSET
to wyrażenie, które można rozwiązać na datetimeoffset(n) wartość i time_zone
jest ciągiem znaków w formacie [+|-]TZH:TZM lub liczbą całkowitą ze znakiem (minut), która reprezentuje przesunięcie strefy czasowej i przyjmuje się, że uwzględnia i dostosowuje czas letni.
Wynik jest zwracany jako przesunięcie daty i godziny z ułamkową precyzją DATETIMEOFFSET
argument.
Przykład 1
Oto podstawowy przykład użycia:
SELECT SWITCHOFFSET( '2112-01-01', '+08:00' ) AS Result;
Wynik:
Result ---------------------------------- 2112-01-01 08:00:00.0000000 +08:00
Przykład 2
W tym przykładzie zastosowano wartość ujemną:
SELECT SWITCHOFFSET( '2112-01-01', '-08:00' ) AS Result;
Wynik:
Result ---------------------------------- 2111-12-31 16:00:00.0000000 -08:00
Przykład 4
W tym przykładzie deklarujemy zmienną i przypisujemy do niej datę za pomocą przesunięcie daty i godziny typ danych. Następnie stosujemy SWITCHOFFSET()
do tej daty i porównaj ją z pierwotną datą.
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', SWITCHOFFSET( @date, '+08:00' ) AS '+08:00';
Wynik:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 04:00:00.0000000 +08:00
Przykład 5
Tutaj robimy to samo, co w poprzednim przykładzie, ale używamy SYSDATETIMEOFFSET()
funkcja do generowania bieżącej daty/czasu i przesunięcia.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Wynik:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00
Przykład 6
Ten przykład jest taki sam jak poprzedni, z tą różnicą, że dodajemy wartość ujemną.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';
Wynik:
Current Date -08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00
Przykład 7
Możesz również podać przesunięcie strefy czasowej jako liczbę całkowitą zamiast ciągu:
SELECT SWITCHOFFSET( '2112-01-01', -180 ) AS Result;
Wynik:
Result ---------------------------------- 2111-12-31 21:00:00.0000000 -03:00