Bonjour,
Effectivement, j'ai bien compris que le DATEPART permettait de détailler la date,
Mais je ne vois pas comment formuler la requête pour faire la comparaison?
je vois 2 options :
- Soit je compare séparément:
1 2 3
| Heure BETWEEN heure1 AND heure2
AND
min BETWEEN min1 AND min2 |
Mais sincèrement je ne l'ai pas testée car ca va obligatoirement sortir n'importe quoi...!
- Comparer simultanément, du genre :
DATEPART(hh, MaTable.date)+':'+DATEPART(hh, MaTable.date) BETWEEN '07:30' AND '20:00'
là j'avoue j'ai testé!
et ca me sort une jolie erreur de type.
J'ai donc 'casté' tout ca du genre :
Mais évidemment rien n'est sorti!
... et c'est en écrivant ce post que je me suis dit :
Tu as casté vers le varchar ... pourquoi pas tenter dans l'autre sens?
et la ... miracle!
(DATEPART(hh,MaTable.date)+(DATEPART( mi,MaTable.date )/100)) Between 5 AND 5
et bien ca marche!
Je m'explique
dans la requete, J'additionne l'heure avec les minutes/100, ca me fait donc un chiffre qui va aller de 0 à 23.59
Mais oui! entre 5 et 5 ... il me trouve des résultats! Bug?
Comment de 5.00 jusqu’à 5.59, SQL peut-il dire que c'est entre 5 et 5...??
--> seule réponse que je vois c'est qu'il l'a rangé par ordre alphabétique??
...et avant il m'embêtait avec une histoire de type?!!
Enfin bon, plus qu'a retoucher le petit bug avec un peu de code derrière mais ca va largement me faciliter la tache.
Comme quoi, merci pour ton intervention iberserk
code complet:
1 2 3 4 5 6 7 8 9 10
| SELECT
MaTable.client
,MaTable.date
FROM MaTable
WHERE
MaTable.client = 'LE CLIENT'
AND
MaTable.date BETWEEN '24/01/2011' AND '26/01/2011'
AND
(DATEPART(hh,MaTable.date)+(DATEPART( mi,MaTable.date )/100)) Between 5 AND 5 |
Partager