Faire un count et grouper par date avec la méthode floor

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 560 fois - Téléchargée 19 fois


Contenu du snippet

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.

A voir également

Ajouter un commentaire

Commentaires

Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
54 -
Ca me plait, ça...
on evite les traitements propres aux dates, qui s'avèrent certainement très lents...
FENETRES
Messages postés
205
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
14 avril 2009
-
" Select Convert(Char(10), GetDate(), 103) " retourne la date sans l'heure... je ne vois pas la difficulté !

Select Convert(Char(10), MonChamp, 103) [Ma date], Count(MonChamp) [Mon compte]
From MaTable
Group by Convert(Char(10), MonChamp, 103)
Nix
Messages postés
838
Date d'inscription
samedi 15 mai 1999
Statut
Modérateur
Dernière intervention
18 juillet 2009
-
Niveau perf en convertissant en char je ne suis pas sur que cela soit plus efficace. Surtout que cela peut impacter l'affichage du tri selon le context régionnal, si tu tries par date du coup le résultat est incertains.
Comme je l'ai il y a d'autres façons de faire. Celle que j'ai présenté est celle que j'utilise.
cs_skweeky
Messages postés
261
Date d'inscription
mercredi 3 mai 2006
Statut
Modérateur
Dernière intervention
11 janvier 2010
1 -
C'est effectivement la méthode la plus lente en passant par un char...
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
FENETRES
Messages postés
205
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
14 avril 2009
-
L'optimisation passe par la création d'un index et la planification de sa défragmentation !
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).

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.