Astuces et conseils pour Communardo

Extraire la date d'une valeur DateTime dans SQL Server

Pour transformer une date avec heure, telle que celle renvoyée par GETDATE(), en une date sans heure, il fallait, jusqu'à la version 2005 de SQL Server, recourir à quelques manipulations complexes.

Je souhaite présenter ici quelques pistes de solution. Celles-ci sont classées par ordre de préférence :

  1. SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

  2. SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)

  3. SELECT CONVERT(DATETIME, CONVERT(CHAR(8), GETDATE(), 112), 112)

Il en existe certainement d’autres. L’inconvénient de la plupart de ces méthodes réside soit dans une conversion peu fiable vers des chaînes de caractères (il faut ici tenir compte de la langue du serveur SQL), soit dans un temps d’exécution long dû à un plan d’exécution complexe.

Dans SQL Server 2008, le type de données DATE a été introduit, ce qui rend ces calculs fastidieux inutiles. L'instruction se présente alors comme suit :

SELECT CONVERT(DATE, GETDATE())

Vous avez des questions ou souhaitez bénéficier de nos conseils ?

Nous sommes à votre disposition pour répondre à vos questions. Il vous suffit d'utiliser notre formulaire de contact.