Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Ajouter un décalage de fuseau horaire à une valeur datetime2 dans SQL Server (T-SQL)

Dans SQL Server, le TODATETIMEOFFSET() fonction a été spécialement conçue pour renvoyer un datetimeoffset valeur d'un datetime2 valeur.

Étant donné que le datetime2 le type de données ne prend pas en charge les décalages de fuseau horaire, et datetimeoffset doit contenir le décalage, le TODATETIMEOFFSET() La fonction vous permet de spécifier un décalage de fuseau horaire à utiliser.

Cet article fournit quelques exemples à démontrer.

Utilisation de base

Voici un exemple d'utilisation typique du TODATETIMEOFFSET() une fonction.

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

Résultat (en utilisant la sortie verticale) :

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

Dans ce cas, je renvoie l'original datetime2 value et le résultat datetimeoffset valeur.

Le résultat est que la date/heure d'origine est la même, sauf que le décalage de fuseau horaire spécifié a été ajouté.

La plage est de +14 à -14 (en heures). L'expression est interprétée en heure locale pour le fuseau horaire spécifié.

Spécifiez le décalage horaire en minutes

Vous pouvez également spécifier le décalage horaire en minutes. Voici un exemple.

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

Résultat (en utilisant la sortie verticale) :

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

Dans ce cas, j'ai spécifié +120 minutes, ce qui équivaut à deux heures. Le résultat a donc été un décalage de fuseau horaire de +02:00 (c'est-à-dire plus deux heures).

Notez également que lorsque vous fournissez le décalage de fuseau horaire en minutes, vous le fournissez sous la forme d'une valeur entière. En revanche, lorsque vous le fournissez en heures, vous devez le spécifier sous forme de chaîne.

Voir Convertir une date dans un autre fuseau horaire pour des exemples sur la façon de procéder.