sql >> Database teknologi >  >> RDS >> Sqlserver

TODATETIMEOFFSET() Eksempler i SQL Server

I SQL Server kan du bruge TODATETIMEOFFSET() funktion for at returnere en datotidsforskydning værdi, der er oversat fra en datetime2 udtryk. Den accepterer to argumenter; datoen og den forskydning, du gerne vil anvende på den dato.

Nedenfor er eksempler på brug.

Syntaks

Syntaksen for TODATETIMEOFFSET() går sådan her:

TODATETIMEOFFSET ( expression , time_zone )

Hvor expression er et udtryk, der løses til en datetime2 værdi og time_zone er den tidszone, du gerne vil anvende på det udtryk (dato).

Du kan angive tidszonen i minutter eller timer. Hvis du angiver det på få minutter, skal du bruge et heltal (f.eks. -120 ), ellers for at angive det i timer, brug en streng (f.eks. '+04.00' ). Området for tidszonen er +14 til -14 (timer).

Også den dato, du angiver, fortolkes i lokal tid for den angivne tidszone.

Eksempel 1

Her er et grundlæggende eksempel på brug:

SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;

Resultat:

Result
----------------------------------
2112-01-01 00:00:00.0000000 +08:00

Eksempel 2 – Negativ værdi

Dette er det samme som det foregående eksempel, bortset fra at jeg bruger en negativ værdi i stedet:

SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;

Resultat:

Result
----------------------------------
2112-01-01 00:00:00.0000000 -08:00

Eksempel 3 – Brug af en datetime2-variabel

I dette eksempel indstiller jeg eksplicit en variabel med en datetime2 værdi, og anvend derefter TODATETIMEOFFSET() til den værdi, og sammenlign værdierne:

DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000';
SELECT 
    @date AS 'Original Date',
    TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';

Resultat:

Original Date               +08:00
--------------------------- ----------------------------------
2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00

Som vi kan se med dette eksempel (og de foregående), har den oprindelige datoværdi ikke nogen datotid offset information (fordi det er en datetime2 værdi), men når vi kører den gennem TODATETIMEOFFSET() funktion, ender vi med en datotidsforskydning datatype.

Eksempel 4 – Brug af en datetime offset-variabel

Dette ligner det foregående eksempel, bortset fra at den oprindelige dato er angivet som en datotidsforskydning værdi:

DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00';
SELECT 
    @date AS 'Original Date',
    TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';

Resultat:

Original Date                      +08:00
---------------------------------- ----------------------------------
2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00

Eksempel 5 – Brug af den aktuelle dato/klokkeslæt

I dette eksempel sender jeg SYSDATETIMEOFFSET() fungere som datoudtryk. Denne funktion genererer den aktuelle dato/klokkeslæt for den computer, der kører SQL Server-forekomsten:

SELECT 
    SYSDATETIMEOFFSET() AS 'Current Date',
    TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';

Resultat:

Current Date                       +08:00
---------------------------------- ----------------------------------
2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00

Eksempel 6 – Angivelse af tidszoneforskydning som et heltal

Som nævnt kan du også angive tidszoneforskydningen som et heltal i stedet for en streng:

SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;

Resultat:

Result
----------------------------------
2112-01-01 00:00:00.0000000 -03:00


  1. Sådan eksporteres forespørgselsresultater til en CSV-fil i SQLcl (Oracle)

  2. Sådan sikrer du Galera Cluster - 8 tips

  3. 2 måder at få det korte månedsnavn fra en dato i MariaDB

  4. Har PL/SQL en tilsvarende StringTokenizer til Java?