V SQL Server, SWITCHOFFSET()
funkci lze použít k vrácení datetimeoffset hodnota, která se změní z uloženého posunu časového pásma na zadaný nový posun časového pásma.
Níže jsou uvedeny příklady, jak tato funkce funguje.
Syntaxe
Nejprve se podívejme, jak probíhá syntaxe:
SWITCHOFFSET ( DATETIMEOFFSET, time_zone )
Kde DATETIMEOFFSET
je výraz, který lze přeložit na datetimeoffset(n) hodnotu a time_zone
je znakový řetězec ve formátu [+|-]TZH:TZM nebo celé číslo se znaménkem (v minutách), které představuje posun časového pásma a předpokládá se, že je v souladu s letním časem a je upraven.
Výsledek je vrácen jako datetimeoffset se zlomkovou přesností DATETIMEOFFSET
argument.
Příklad 1
Zde je základní příklad použití:
SELECT SWITCHOFFSET( '2112-01-01', '+08:00' ) AS Result;
Výsledek:
Result ---------------------------------- 2112-01-01 08:00:00.0000000 +08:00
Příklad 2
Tento příklad používá zápornou hodnotu:
SELECT SWITCHOFFSET( '2112-01-01', '-08:00' ) AS Result;
Výsledek:
Result ---------------------------------- 2111-12-31 16:00:00.0000000 -08:00
Příklad 4
V tomto příkladu deklarujeme proměnnou a přiřadíme jí datum pomocí datetimeoffset datový typ. Poté použijeme SWITCHOFFSET()
k tomuto datu a porovnejte jej s původním datem.
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', SWITCHOFFSET( @date, '+08:00' ) AS '+08:00';
Výsledek:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 04:00:00.0000000 +08:00
Příklad 5
Zde uděláme to samé jako v předchozím příkladu, ale použijeme SYSDATETIMEOFFSET()
funkce pro vygenerování aktuálního data/času a posunu.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Výsledek:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00
Příklad 6
Tento příklad je stejný jako předchozí, kromě toho, že přidáme zápornou hodnotu.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';
Výsledek:
Current Date -08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00
Příklad 7
Můžete také zadat posun časového pásma jako celé číslo namísto řetězce:
SELECT SWITCHOFFSET( '2112-01-01', -180 ) AS Result;
Výsledek:
Result ---------------------------------- 2111-12-31 21:00:00.0000000 -03:00