Sql - Select entre heure date et heure date

Fermé
Bleue - 24 janv. 2012 à 09:52
 Bleu - 1 févr. 2012 à 16:24
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 !

2 réponses

Matthiouw Messages postés 17 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 25 août 2012
Modifié par Matthiouw le 24/01/2012 à 20:59
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 :
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.
0
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)
)
;
0