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

Tilføj en tidszoneforskydning til en datetime2-værdi i SQL Server (T-SQL)

I SQL Server er TODATETIMEOFFSET() funktion blev specifikt designet til at returnere en datetime offset værdi fra en datetime2 værdi.

I betragtning af det faktum, at datetime2 datatypen understøtter faktisk ikke tidszoneforskydninger og datetimeoffset skal indeholde forskydningen, TODATETIMEOFFSET() funktionen giver dig mulighed for at angive en tidszoneforskydning, der skal bruges.

Denne artikel giver nogle eksempler til demonstration.

Grundlæggende brug

Her er et eksempel på typisk brug af TODATETIMEOFFSET() fungere.

DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
  @dt AS [datetime2],
  TODATETIMEOFFSET(@dt, '+07:00') AS [datetimeoffset];

Resultat (ved hjælp af lodret output):

datetime2      | 2020-12-20 17:33:59.8900000
datetimeoffset | 2020-12-20 17:33:59.8900000 +07:00

I dette tilfælde returnerer jeg den originale datetime2 værdi og den resulterende datetimeoffset værdi.

Resultatet er, at den oprindelige dato/tid er den samme, bortset fra at den angivne tidszoneforskydning er blevet tilføjet.

Området er +14 til -14 (i timer). Udtrykket fortolkes i lokal tid for den angivne tidszone.

Angiv tidszoneforskydningen i minutter

Du kan alternativt angive tidszoneforskydningen i minutter. Her er et eksempel.

DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
  @dt AS [datetime2],
  TODATETIMEOFFSET(@dt, +120) AS [datetimeoffset];

Resultat (ved hjælp af lodret output):

datetime2      | 2020-12-20 17:33:59.8900000
datetimeoffset | 2020-12-20 17:33:59.8900000 +02:00

I dette tilfælde specificerede jeg +120 minutter, hvilket er det samme som to timer. Så resultatet var en tidszoneforskydning på +02:00 (betydet plus to timer).

Bemærk også, at når du angiver tidszoneforskydningen i minutter, angiver du den som en heltalsværdi. På den anden side, når du angiver det i timer, skal du angive det som en streng.

Se Konverter en dato til en anden tidszone for eksempler på, hvordan du gør dette.


  1. Sådan bruger du SqlTransaction i C#

  2. Konverter 'datetimeoffset' til 'datetime2' i SQL Server (T-SQL-eksempler)

  3. Ydeevnemyter:Klyngede vs. ikke-klyngede indekser

  4. RAWTONHEX() Funktion i Oracle