FAIRE UN COUNT ET GROUPER PAR DATE AVEC LA MÉTHODE FLOOR

Signaler
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Messages postés
196
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
14 avril 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42441-faire-un-count-et-grouper-par-date-avec-la-methode-floor

Messages postés
196
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
14 avril 2009

Correction pour la forme...

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 !
Messages postés
196
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
14 avril 2009

Explication de l'idée exposée par Nix :

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).
Messages postés
196
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
14 avril 2009

Sur une table de 100 000 lignes j'ai mesuré un temps d'exécution de 290 ms au lieu de 540 ms.
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 ".
Messages postés
196
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).
Afficher les 8 commentaires