sql >> Databasteknik >  >> RDS >> Sqlserver

Lägg till en tidszonförskjutning till ett datetime2-värde i SQL Server (T-SQL)

I SQL Server, TODATETIMEOFFSET() funktion designades specifikt för att returnera en datumtidsförskjutning värde från en datetime2 värde.

Med tanke på det faktum att datetime2 datatypen stöder faktiskt inte tidszonförskjutningar och datetimeoffset måste innehålla offset, TODATETIMEOFFSET() funktionen låter dig ange en tidszonförskjutning som ska användas.

Den här artikeln ger några exempel att visa.

Grundläggande användning

Här är ett exempel på typisk användning av TODATETIMEOFFSET() fungera.

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

Resultat (med vertikal utdata):

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

I det här fallet returnerar jag originalet datetime2 värde och den resulterande datetimeoffset värde.

Resultatet är att det ursprungliga datumet/tiden är densamma, förutom att den angivna tidszonsförskjutningen har lagts till.

Intervallet är +14 till -14 (i timmar). Uttrycket tolkas i lokal tid för den angivna tidszonen.

Ange tidszonsförskjutningen i minuter

Du kan alternativt ange tidszonsförskjutningen i minuter. Här är ett exempel.

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

Resultat (med vertikal utdata):

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

I det här fallet angav jag +120 minuter, vilket är samma som två timmar. Så resultatet blev en tidszonförskjutning på +02:00 (vilket betyder plus två timmar).

Observera också att när du anger tidszonförskjutningen i minuter, anger du den som ett heltalsvärde. Å andra sidan, när du tillhandahåller det i timmar, måste du ange det som en sträng.

Se Konvertera ett datum till en annan tidszon för exempel på hur du gör detta.


  1. Hur man överför alla MySQL-databaser från gammal till ny server

  2. Hur hittar jag dubbletter över flera kolumner?

  3. Returnera alla icke-beräknade kolumner från en tabell i SQL Server

  4. Hur man använder den lagrade proceduren 'sp_server_info' i SQL Server