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

SWITCHOFFSET() Exemples dans SQL Server

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 )

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