Partager via


GETDATE (Transact-SQL)

Retourne l'horodateur système de base de données actuel en tant que valeur datetime sans le décalage de fuseau horaire de la base de données. Cette valeur est dérivée du système d'exploitation de l'ordinateur sur lequel l'instance de SQL Server s'exécute.

Notes

SYSDATETIME et SYSUTCDATETIME ont plus de précision en fractions de seconde que GETDATE et GETUTCDATE.SYSDATETIMEOFFSET inclut le décalage de fuseau horaire système.SYSDATETIME, SYSUTCDATETIME et SYSDATETIMEOFFSET peuvent être assignés à une variable de chacun des types de date et d'heure.

Pour obtenir une vue d'ensemble de tous les types de données et fonctions de date et d'heure Transact-SQL, consultez Types de données et fonctions de date et d'heure (Transact-SQL).

S'applique à : SQL Server (SQL Server 2008 via la version actuelle, Base de données SQL Windows Azure (version initiale via la version actuelle.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

GETDATE ( )

Type de retour

datetime

Notes

Les instructions Transact-SQL peuvent faire référence à GETDATE partout où elles peuvent faire référence à une expression datetime.

GETDATE est une fonction non déterministe. Les vues et expressions qui référencent cette fonction dans une colonne ne peuvent pas être indexées.

L'utilisation de SWITCHOFFSET avec la fonction GETDATE() peut entraîner un ralentissement de l'exécution de la requête car l'optimiseur de requête n'est pas en mesure d'obtenir les estimations de cardinalité exactes pour la valeur GETDATE. Nous recommandons de précalculer la valeur GETDATE puis de spécifier cette valeur dans la requête, comme le montre l'exemple suivant. En outre, utilisez l'indicateur de requête OPTION (RECOMPILE) pour forcer l'optimiseur de requête à recompiler un plan de requête lors de la prochaine exécution de cette même requête. L'optimiseur dispose alors d'estimations de cardinalité précises pour GETDATE() et produit un plan de requête plus efficace.

DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00'); 
SELECT * FROM t  
WHERE c1 > @dt OPTION (RECOMPILE);

Exemples

Les exemples suivants utilisent les six fonctions système SQL Server qui retournent les date et heure actuelles pour retourner la date, l'heure ou les deux. Les valeurs sont retournées en séries ; par conséquent, leurs fractions de seconde peuvent être différentes.

A.Obtention des date et heure système actuelles

SELECT SYSDATETIME()
    ,SYSDATETIMEOFFSET()
    ,SYSUTCDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE()
    ,GETUTCDATE();

Voici l'ensemble des résultats.

SYSDATETIME() 2007-04-30 13:10:02.0474381

SYSDATETIMEOFFSET()2007-04-30 13:10:02.0474381 -07:00

SYSUTCDATETIME() 2007-04-30 20:10:02.0474381

CURRENT_TIMESTAMP 2007-04-30 13:10:02.047

GETDATE() 2007-04-30 13:10:02.047

GETUTCDATE() 2007-04-30 20:10:02.047

B.Obtention de la date système actuelle

SELECT CONVERT (date, SYSDATETIME())
    ,CONVERT (date, SYSDATETIMEOFFSET())
    ,CONVERT (date, SYSUTCDATETIME())
    ,CONVERT (date, CURRENT_TIMESTAMP)
    ,CONVERT (date, GETDATE())
    ,CONVERT (date, GETUTCDATE());

Voici l'ensemble des résultats.

SYSDATETIME() 2007-05-03

SYSDATETIMEOFFSET() 2007-05-03

SYSUTCDATETIME() 2007-05-04

CURRENT_TIMESTAMP 2007-05-03

GETDATE() 2007-05-03

GETUTCDATE() 2007-05-04

C.Obtention de l'heure système actuelle

SELECT CONVERT (time, SYSDATETIME())
    ,CONVERT (time, SYSDATETIMEOFFSET())
    ,CONVERT (time, SYSUTCDATETIME())
    ,CONVERT (time, CURRENT_TIMESTAMP)
    ,CONVERT (time, GETDATE())
    ,CONVERT (time, GETUTCDATE());

Voici l'ensemble des résultats.

SYSDATETIME() 13:18:45.3490361

SYSDATETIMEOFFSET()13:18:45.3490361

SYSUTCDATETIME() 20:18:45.3490361

CURRENT_TIMESTAMP 13:18:45.3470000

GETDATE() 13:18:45.3470000

GETUTCDATE() 20:18:45.3470000

Voir aussi

Référence

CAST et CONVERT (Transact-SQL)