Extrait de l'article de SQLPro sur le temps, sa mesure et ses calculs :
La norme SQL 2 impose en outre la représentation des dates et heures suivant le masque :
- HEURE => hh:mm:ss.nnn
- DATE => AAAA-MM-JJ
- DATE et HEURE => AAAA-MM-JJ hh:mm:ss.nnn
Si la colonne starttime est, comme il se devrait de type DATE ou DATETIME, il y a de fortes chances que mon BETWEEN fonctionne. Celui de looping par contre fera une comparaison de chaînes de caractères par ordre alphabétique et la "date" 12/01/2010 sera ignorée alors qu'elle devrait être retenue.
Comme par ailleurs les fonctions de conversion de chaîne de caractères en date dépendent parfois du SGBD utilisé, pas sûr que la solution normalisée fonctionne :
WHERE CAST(dtvaleur AS DATE) BETWEEN '2009-06-01' AND '2009-07-01'
Partager