Dans SQL Server, vous pouvez utiliser le TODATETIMEOFFSET()
fonction pour renvoyer un datetimeoffset valeur traduite à partir d'une datetime2 expression. Il accepte deux arguments ; la date et le décalage que vous souhaitez appliquer à cette date.
Vous trouverez ci-dessous des exemples d'utilisation.
Syntaxe
La syntaxe de TODATETIMEOFFSET()
va comme ceci :
TODATETIMEOFFSET ( expression , time_zone )
Où expression
est une expression qui se résout en une datetime2 valeur et time_zone
est le fuseau horaire que vous souhaitez appliquer à cette expression (date).
Vous pouvez fournir le fuseau horaire en minutes ou en heures. Si vous le fournissez en minutes, utilisez un nombre entier (par exemple, -120
), sinon pour le fournir en heures, utilisez une chaîne (par exemple '+04.00'
). La plage pour le fuseau horaire est de +14 à -14 (heures).
De plus, la date que vous fournissez est interprétée en heure locale pour le fuseau horaire spécifié.
Exemple 1
Voici un exemple basique d'utilisation :
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;
Résultat :
Result ---------------------------------- 2112-01-01 00:00:00.0000000 +08:00
Exemple 2 – Valeur négative
C'est le même que l'exemple précédent, sauf que j'utilise une valeur négative à la place :
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;
Résultat :
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -08:00
Exemple 3 - Utilisation d'une variable datetime2
Dans cet exemple, j'ai défini explicitement une variable avec un datetime2 valeur, puis appliquez TODATETIMEOFFSET()
à cette valeur, et comparez les valeurs :
DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Résultat :
Original Date +08:00 --------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00
Comme nous pouvons le voir avec cet exemple (et les précédents), la valeur de date d'origine n'a pas de datetime informations de décalage (car il s'agit d'un datetime2 valeur), mais une fois que nous l'avons exécuté via le TODATETIMEOFFSET()
fonction, nous nous retrouvons avec un datetimeoffset type de données.
Exemple 4 - Utilisation d'une variable datetimeoffset
Ceci est similaire à l'exemple précédent, sauf que la date d'origine est définie en tant que datetimeoffset valeur :
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Résultat :
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00
Exemple 5 - Utilisation de la date/heure actuelle
Dans cet exemple, je passe le SYSDATETIMEOFFSET()
fonctionner comme expression de date. Cette fonction génère la date/heure actuelle de l'ordinateur qui exécute l'instance SQL Server :
SELECT SYSDATETIMEOFFSET() AS 'Current Date', TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Résultat :
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00
Exemple 6 - Fournir le décalage de fuseau horaire sous forme d'entier
Comme mentionné, vous pouvez également fournir le décalage horaire sous forme d'entier au lieu d'une chaîne :
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;
Résultat :
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -03:00