Sql - Select entre heure date et heure date
Bleue
-
Bleu -
Bleu -
Bonjour,
Je cherche à exécuter une requête SQL qui sélectionne des sorties de voitures. Il faut que je trie ces sorties par horaires (matin entre 05h et 13h, aprèm entre 13h et 21h et nuit entre 21h et 05h de la journée d'après).
Voilà ce que peut être une sortie de voiture:
IDsortie: 24
endroitSortieID: 2
debutSortie: 2012-01-24
heureDebutSortie: 22:00:00
J'arrive à récupérer toutes mes sorties avec cette requête:
SELECT S.IDsortie
FROM SortieVoiture S, EndroitSortie E
WHERE S.endroitSortieID = E.IDendroitSortie
AND S.debutSortie = 2012-01-24
AND S.heureDebutSortie
BETWEEN 21:00:00 AND 23:59:59
mais dès que j'essaie de gérer aussi de minuit à 5h je bloque (cette requête ne fonctionne pas):
SELECT S.IDsortie
FROM SortieVoiture S, EndroitSortie E
WHERE S.endroitSortieID = E.IDendroitSortie
AND
(S.debutSortie = 2012-01-24
AND S.heureDebutSortie BETWEEN 21:00:00 AND 23:59:59)
AND
(S.debutSortie = 2012-01-25
AND S.heureDebutSortie
BETWEEN 00:00:00 AND 04:59:59)
Si quelqu'un avait l'amabilité de se pencher sur mon problème je lui serait très reconnaissante !
Je cherche à exécuter une requête SQL qui sélectionne des sorties de voitures. Il faut que je trie ces sorties par horaires (matin entre 05h et 13h, aprèm entre 13h et 21h et nuit entre 21h et 05h de la journée d'après).
Voilà ce que peut être une sortie de voiture:
IDsortie: 24
endroitSortieID: 2
debutSortie: 2012-01-24
heureDebutSortie: 22:00:00
J'arrive à récupérer toutes mes sorties avec cette requête:
SELECT S.IDsortie
FROM SortieVoiture S, EndroitSortie E
WHERE S.endroitSortieID = E.IDendroitSortie
AND S.debutSortie = 2012-01-24
AND S.heureDebutSortie
BETWEEN 21:00:00 AND 23:59:59
mais dès que j'essaie de gérer aussi de minuit à 5h je bloque (cette requête ne fonctionne pas):
SELECT S.IDsortie
FROM SortieVoiture S, EndroitSortie E
WHERE S.endroitSortieID = E.IDendroitSortie
AND
(S.debutSortie = 2012-01-24
AND S.heureDebutSortie BETWEEN 21:00:00 AND 23:59:59)
AND
(S.debutSortie = 2012-01-25
AND S.heureDebutSortie
BETWEEN 00:00:00 AND 04:59:59)
Si quelqu'un avait l'amabilité de se pencher sur mon problème je lui serait très reconnaissante !
A voir également:
- Sql - Select entre heure date et heure date
- Changement d'heure - Guide
- 35 go internet équivalent en heure ✓ - Forum Free mobile
- Publipostage date inversée ✓ - Forum Word
- Whatsapp date et heure incorrecte ✓ - Forum Mobile
- 2go internet = combien d'heure - Forum Opérateurs & Réseaux mobiles
2 réponses
Salut,
Je suis pas sur du tout de ma réponse, je suis actuellement en DUT informatique donc pas trop d'expérience. Mais tu as la possibilité de faire des requetes du genre :
Ça te permet d'ajouter non pas 1 jour à la date d'aujourd'hui, mais la moitié donc 12h.
Il faudra juste chercher la fraction qui te permet d'ajouter les heures voulues.
Maintenant, toi tu stocks 2 champs différents : la date de début, et l'heure de début. Or j'ai toujours travaillé avec des dates ayant un format spécial que tu formates.
Il faut voir si ça fonctionne quand même.
Je suis pas sur du tout de ma réponse, je suis actuellement en DUT informatique donc pas trop d'expérience. Mais tu as la possibilité de faire des requetes du genre :
select to_date(sysdate +1/2, 'DD/MM/YY HH24:MM:SS') from dual;
Ça te permet d'ajouter non pas 1 jour à la date d'aujourd'hui, mais la moitié donc 12h.
Il faudra juste chercher la fraction qui te permet d'ajouter les heures voulues.
Maintenant, toi tu stocks 2 champs différents : la date de début, et l'heure de début. Or j'ai toujours travaillé avec des dates ayant un format spécial que tu formates.
to_char("date en question qui fait office de variable", 'DD/MM/YYYY HH24:MM:SS')
Il faut voir si ça fonctionne quand même.
Merci à toi Matthiouw de ta réponse, j'ai cherché un peu comment utiliser ta fonction et j'ai trouvé un sujet similaire sur un autre site qui m'a aidée à trouver la réponse.
Voilà ce que j'ai fais:
SELECT S.IDsortie
FROM SortieVoiture S, EndroitSortie E
WHERE S.endroitSortieID = E.IDendroitSortie
AND (
(S.debutSortie='$dateAujourdhui'
AND S.heureDebutSortie
BETWEEN 21:00:00 AND 23:59:59)
OR
(S.debutSortie='$dateDemain'
AND S.heureDebutSortie
BETWEEN 00:00:00 AND 04:59:59)
)
;
Voilà ce que j'ai fais:
SELECT S.IDsortie
FROM SortieVoiture S, EndroitSortie E
WHERE S.endroitSortieID = E.IDendroitSortie
AND (
(S.debutSortie='$dateAujourdhui'
AND S.heureDebutSortie
BETWEEN 21:00:00 AND 23:59:59)
OR
(S.debutSortie='$dateDemain'
AND S.heureDebutSortie
BETWEEN 00:00:00 AND 04:59:59)
)
;