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

Aggiungere un offset di fuso orario a un valore datetime2 in SQL Server (T-SQL)

In SQL Server, il TODATETIMEOFFSET() La funzione è stata progettata specificamente per restituire un datetimeoffset valore da un datetime2 valore.

Dato il fatto che datetime2 il tipo di dati in realtà non supporta gli scostamenti del fuso orario e datetimeoffset deve contenere l'offset, il TODATETIMEOFFSET() La funzione consente di specificare un fuso orario da utilizzare.

Questo articolo fornisce alcuni esempi da dimostrare.

Utilizzo di base

Ecco un esempio di utilizzo tipico di TODATETIMEOFFSET() funzione.

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

Risultato (usando l'output verticale):

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

In questo caso restituisco l'originale datetime2 valore e il risultante datetimeoffset valore.

Il risultato è che la data/ora originale è la stessa, tranne per il fatto che è stato aggiunto l'offset del fuso orario specificato.

L'intervallo è compreso tra +14 e -14 (in ore). L'espressione viene interpretata nell'ora locale per il fuso orario specificato.

Specifica la differenza di fuso orario in minuti

In alternativa è possibile specificare l'offset del fuso orario in minuti. Ecco un esempio.

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

Risultato (usando l'output verticale):

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

In questo caso ho specificato +120 minuti, che equivalgono a due ore. Quindi il risultato è stato un offset di fuso orario di +02:00 (che significa più due ore).

Tieni inoltre presente che quando fornisci l'offset del fuso orario in minuti, lo fornisci come valore intero. D'altra parte, quando lo fornisci in ore, devi specificarlo come stringa.

Consulta Convertire una data in un altro fuso orario per esempi su come farlo.