Dans SQL Server, le SWITCHOFFSET()
la fonction peut être utilisée pour renvoyer un décalage de date/heure valeur qui passe du décalage de fuseau horaire stocké à un nouveau décalage de fuseau horaire spécifié.
Vous trouverez ci-dessous des exemples de fonctionnement de cette fonction.
Syntaxe
Tout d'abord, voici comment fonctionne la syntaxe :
SWITCHOFFSET ( DATETIMEOFFSET, time_zone )
Où DATETIMEOFFSET
est une expression qui peut être résolue en un datetimeoffset(n) valeur et time_zone
est une chaîne de caractères au format [+|-]TZH:TZM ou un entier signé (de minutes) qui représente le décalage de fuseau horaire, et est supposé être sensible à l'heure d'été et ajusté.
Le résultat est renvoyé sous la forme datetimeoffset avec la précision fractionnaire du DATETIMEOFFSET
arguments.
Exemple 1
Voici un exemple basique d'utilisation :
SELECT SWITCHOFFSET( '2112-01-01', '+08:00' ) AS Result;
Résultat :
Result ---------------------------------- 2112-01-01 08:00:00.0000000 +08:00
Exemple 2
Cet exemple utilise une valeur négative :
SELECT SWITCHOFFSET( '2112-01-01', '-08:00' ) AS Result;
Résultat :
Result ---------------------------------- 2111-12-31 16:00:00.0000000 -08:00
Exemple 4
Dans cet exemple, nous déclarons une variable et lui attribuons une date en utilisant le datetimeoffset Type de données. Nous appliquons ensuite SWITCHOFFSET()
à cette date et comparez-la avec la date d'origine.
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', SWITCHOFFSET( @date, '+08:00' ) AS '+08:00';
Résultat :
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 04:00:00.0000000 +08:00
Exemple 5
Ici, nous faisons la même chose que l'exemple précédent, mais nous utilisons le SYSDATETIMEOFFSET()
fonction pour générer la date/heure actuelle et le décalage.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Résultat :
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00
Exemple 6
Cet exemple est le même que le précédent, sauf que nous ajoutons une valeur négative.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';
Résultat :
Current Date -08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00
Exemple 7
Vous pouvez également fournir le décalage horaire sous forme d'entier au lieu d'une chaîne :
SELECT SWITCHOFFSET( '2112-01-01', -180 ) AS Result;
Résultat :
Result ---------------------------------- 2111-12-31 21:00:00.0000000 -03:00