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

SYSDATETIMEOFFSET() Exemples dans SQL Server (T-SQL)

Dans SQL Server, le transact-sql SYSDATETIMEOFFSET() la fonction renvoie un datetimeoffset(7) valeur qui contient la date et l'heure de l'ordinateur sur lequel l'instance de SQL Server s'exécute. Cette valeur inclut le décalage horaire.

Exemples d'utilisation ci-dessous.

Syntaxe

La syntaxe ressemble à ceci :

SYSDATETIMEOFFSET ( )

Vous appelez donc simplement la fonction sans aucun argument.

Exemple

Voici un exemple de base :

SELECT SYSDATETIMEOFFSET() AS Result;

Résultat :

Result
----------------------------------
2018-06-17 09:55:27.3221853 +10:00

Extraire le décalage de fuseau horaire

Vous pouvez utiliser le DATEPART() fonction pour renvoyer le décalage de fuseau horaire. Cette fonction renvoie un entier qui représente le décalage horaire en minutes.

Exemple :

SELECT 
    SYSDATETIMEOFFSET() AS 'Date/time',
    DATEPART(TZoffset, SYSDATETIMEOFFSET()) AS 'TZ Offset';

Résultat :

Date/time                             TZ Offset
----------------------------------    -----------
2018-06-17 10:04:23.2316409 +10:00    600

Vous pouvez également utiliser la fonction FORMAT() pour renvoyer le décalage de fuseau horaire sous forme de chaîne. Plus précisément, vous pouvez utiliser le z , zz , et/ou zzz arguments pour le renvoyer dans le format requis.

Exemple :

SELECT 
    SYSDATETIMEOFFSET() AS 'Date/time',
    FORMAT(SYSDATETIMEOFFSET(), 'zz') AS 'zz',
    FORMAT(SYSDATETIMEOFFSET(), 'zzz') AS 'zzz';

Résultat :

Date/time                             zz                zzz
----------------------------------    --------------    --------------
2018-06-17 10:27:33.7314840 +10:00    +10               +10:00

Convertir la valeur de retour

Vous pouvez également utiliser des fonctions telles que CONVERT() pour convertir la valeur de retour dans un autre type de données. Voici un exemple où je le convertis en une date valeur et un temps valeur :

SELECT 
    CONVERT (date, SYSDATETIMEOFFSET()) AS 'Date',
    CONVERT (time, SYSDATETIMEOFFSET()) AS 'Time';

Résultat :

Date          Time
----------    ----------------
2018-06-17    10:08:29.6377947

Bien sûr, une fois que nous faisons cela, nous perdons le décalage horaire.

Voir aussi TODATETIMEOFFSET() qui vous permet d'obtenir un datetimeoffset valeur à partir d'un datetime2 expression, et SWITCHOFFSET() qui vous permet de modifier un décalage de fuseau horaire.