
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 :
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)
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())