V SQL Server můžete použít TODATETIMEOFFSET()
funkci vrátit datetimeoffset hodnota, která je přeložena z datetime2 výraz. Přijímá dva argumenty; datum a offset, který chcete na toto datum použít.
Níže jsou uvedeny příklady použití.
Syntaxe
Syntaxe TODATETIMEOFFSET()
vypadá takto:
TODATETIMEOFFSET ( expression , time_zone )
Kde expression
je výraz, který se překládá na datetime2 hodnotu a time_zone
je časové pásmo, které chcete pro daný výraz použít (datum).
Časové pásmo můžete zadat v minutách nebo hodinách. Pokud jej zadáte v minutách, použijte celé číslo (např. -120
), jinak k zadání v hodinách použijte řetězec (např. '+04.00'
). Rozsah pro časové pásmo je +14 až -14 (hodin).
Datum, které zadáte, je také interpretováno v místním čase pro zadané časové pásmo.
Příklad 1
Zde je základní příklad použití:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;
Výsledek:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 +08:00
Příklad 2 – Záporná hodnota
To je stejné jako v předchozím příkladu, až na to, že místo toho používám zápornou hodnotu:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;
Výsledek:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -08:00
Příklad 3 – Použití proměnné datetime2
V tomto příkladu jsem explicitně nastavil proměnnou s datetime2 hodnotu a poté použijte TODATETIMEOFFSET()
k této hodnotě a porovnejte hodnoty:
DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Výsledek:
Original Date +08:00 --------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00
Jak vidíme na tomto příkladu (a na předchozích), původní hodnota data nemá žádné datetime informace o offsetu (protože se jedná o datetime2 value), ale jakmile jej spustíme pomocí TODATETIMEOFFSET()
skončíme s datetimeoffset datový typ.
Příklad 4 – Použití proměnné datetimeoffset
Je to podobné jako v předchozím příkladu, s tím rozdílem, že původní datum je nastaveno jako datetimeoffset hodnota:
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Výsledek:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00
Příklad 5 – Použití aktuálního data/času
V tomto příkladu předám SYSDATETIMEOFFSET()
fungovat jako výraz data. Tato funkce generuje aktuální datum/čas počítače, na kterém je spuštěna instance SQL Server:
SELECT SYSDATETIMEOFFSET() AS 'Current Date', TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Výsledek:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00
Příklad 6 – Poskytnutí posunu časového pásma jako celé číslo
Jak již bylo zmíněno, můžete také zadat posun časového pásma jako celé číslo namísto řetězce:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;
Výsledek:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -03:00