V SQL Server, TODATETIMEOFFSET()
funkce byla speciálně navržena tak, aby vracela datetimeoffset hodnotu z datetime2 hodnota.
Vzhledem k tomu, že datetime2 datový typ ve skutečnosti nepodporuje posuny časových pásem a datetimeoffset musí obsahovat posun, TODATETIMEOFFSET()
funkce vám umožňuje určit posun časového pásma, který se má použít.
Tento článek poskytuje několik příkladů k demonstraci.
Základní použití
Zde je příklad typického použití TODATETIMEOFFSET()
funkce.
DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
@dt AS [datetime2],
TODATETIMEOFFSET(@dt, '+07:00') AS [datetimeoffset];
Výsledek (při použití vertikálního výstupu):
datetime2 | 2020-12-20 17:33:59.8900000 datetimeoffset | 2020-12-20 17:33:59.8900000 +07:00
V tomto případě vrátím původní datetime2 hodnotu a výsledný datetimeoffset hodnota.
Výsledkem je, že původní datum/čas je stejný, až na to, že byl přidán posun zadaného časového pásma.
Rozsah je +14 až -14 (v hodinách). Výraz je interpretován v místním čase pro zadané časové pásmo.
Zadejte posun časového pásma v minutách
Alternativně můžete zadat posun časového pásma v minutách. Zde je příklad.
DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
@dt AS [datetime2],
TODATETIMEOFFSET(@dt, +120) AS [datetimeoffset];
Výsledek (při použití vertikálního výstupu):
datetime2 | 2020-12-20 17:33:59.8900000 datetimeoffset | 2020-12-20 17:33:59.8900000 +02:00
V tomto případě jsem uvedl +120 minut, což je stejné jako dvě hodiny. Takže výsledkem byl posun časového pásma +02:00 (to znamená plus dvě hodiny).
Všimněte si také, že když zadáte posun časového pásma v minutách, zadáte jej jako celočíselnou hodnotu. Na druhou stranu, když jej zadáte v hodinách, musíte jej zadat jako řetězec.
Příklady, jak to provést, naleznete v části Převod data na jiné časové pásmo.