Il m'est souvent arrivé de devoir faire un Count en groupant par date avec un champ datetime comprennant la date et l'heure. Je n'ai pas trouvé de fonctionnalité par défaut qui permette de convertir en date (sans l'heure) dans SQL, mais la méthode FLOOR on peut facilement le faire.
Le but de la requête ci-dessous est de regrouper ces dates pour faire un count.
Source / Exemple :
SELECT
DATEADD(d,0,FLOOR(CONVERT(float,ChampDate))) As LaDate,
COUNT(ChampACompter) As Compte
FROM
MaTable
GROUP BY
FLOOR(CONVERT(float,ChampDate))
Conclusion :
Il y a peut-être d'autres façons de faire, mais celle-ci est simple et efficace.
3 mai 2007 à 10:10
si @dte1 = cast('02/05/2007 16:44:00' as datetime)
et @dte2 = cast('02/05/2007 00:00:00' as datetime)
alors
floor(cast(@dte1 as float)) = cast(@dte2 as float).
mais je suppose que tout le monde a compris le fond !
2 mai 2007 à 16:49
La partie décimale de la conversion en nombre réel d'une variable DateTime correspond à l'heure ainsi,
si @dte = cast('02/05/2007 16:44:00' as datetime)
alors
floor(cast(@dte as float)) = cast('02/05/2007 00:00:00' as float).
2 mai 2007 à 14:02
La méthode est donc effectivement performante mais il ne faudrait pas oublier les règles de base. Dans ce cas, par exemple, il n'y a aucun intérêt à appliquer celle-ci : " le jeu n'en vaut pas la chandelle ".
2 mai 2007 à 10:17
Quant à la remarque liée au contexte régional, il est toujours possible d'utiliser le format canonique.
Enfin, la lisibilité du code est un dernier argument pour une bonne maintenance.
Bref, je ne vois toujours qu'une complication inutile (cf. plan d'exécution).
29 avril 2007 à 13:04
Pour les comparaisons : http://blogs.codes-sources.com/christian/archive/2007/04/29/sql-server-conserver-la-date-ou-l-heure-d-un-datetime-comparaison-des-methodes.aspx
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.