sql >> Databáze >  >> RDS >> Sqlserver

TODATETIMEOFFSET() Příklady v SQL Server

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


  1. MySQL - spočítat celkový počet řádků v php

  2. PostgreSQL - Zápis dynamického SQL do uložené procedury, která vrací sadu výsledků

  3. Jak migrovat databázi Oracle z AWS EC2 na AWS RDS

  4. Jaký je nejrychlejší způsob, jak zkrátit časová razítka na 5 minut v Postgres?