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

TODATETIMEOFFSET() Exemples dans SQL Server

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 )

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