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

SYSUTCDATETIME() vs GETUTCDATE() dans SQL Server :Quelle est la différence ?

SYSUTCDATETIME() et GETUTCDATE() sont deux fonctions de date/heure T-SQL disponibles pour une utilisation dans SQL Server. Ces fonctions renvoient la date et l'heure de l'ordinateur sur lequel l'instance de SQL Server s'exécute. Les deux fonctions renvoient la date et l'heure en temps UTC (Coordinated Universal Time).

Ainsi, les deux fonctions font la même chose. Presque.

Voici en quoi ces deux fonctions diffèrent :

  • GETUTCDATE() renvoie sa valeur sous forme de datetime valeur.
  • SYSUTCDATETIME() renvoie sa valeur sous forme de datetime2 valeur.

Cela signifie que SYSUTCDATETIME() fournit plus de précision en secondes. Le datetime2 le type de données a également une plage plus large que datetime .

Exemple

Voici un exemple pour illustrer la valeur renvoyée par chaque fonction :

SELECT 
    GETUTCDATE() AS GETUTCDATE,
    SYSUTCDATETIME() AS SYSUTCDATETIME;

Résultat :

+-------------------------+-----------------------------+
| GETUTCDATE              | SYSUTCDATETIME              |
|-------------------------+-----------------------------|
| 2018-06-13 11:04:55.237 | 2018-06-13 11:04:55.2396676 |
+-------------------------+-----------------------------+

Ceci est donc similaire à la différence entre SYSDATETIME() et GETDATE() .

Lequel dois-je utiliser ?

Microsoft recommande d'utiliser datetime2 avec nos valeurs de date/heure. Ce type de données est conforme à la norme SQL et est plus portable que datetime .

Par conséquent, utilisez SYSUTCDATETIME() sauf si vous avez une raison spécifique de ne pas le faire.