Page 1 sur 3

créneaux horaires

Posté : 26 avr. 2005, 10:19
par coolhead
Salut,

J'ai une base MySQL pour faire des réservation avec plusieurs champs dont : "Heure_Deb" et "Heure_Fin".

Je ne trouve pas la requete qui me permette de voir si j'ai des réservations suivant des créneau horaire.

Par exemple, j'ai :

reserv_debut reserv_fin
00:14:00 00:18:00
00:08:00 00:20:00
00:08:00 00:20:00
00:08:00 00:12:00
00:14:00 00:17:00
00:08:00 00:12:00
00:14:00 00:17:00
00:17:00 00:20:00
00:17:00 00:20:00
00:14:00 00:19:00
00:12:00 00:15:00
00:10:00 00:17:00
00:09:00 00:17:00
00:17:00 00:18:00

je veux savoir si il y a des réservations dans le créneau 12H00 - 14H00

Posté : 26 avr. 2005, 10:23
par Cyrano
à première vue, tu as enregistré dans ta base des horaires qui sont tous dans la fourchette 00h00mn00" et 00h59mn59"
Tu n'as donc aucune chance de trouver quoique ce soit entre 12h00mn00" et 14h00mn00"

Posté : 26 avr. 2005, 10:29
par coolhead
non !!

00:14:00 00:18:00

c'est bien 14h => 18h

Posté : 26 avr. 2005, 10:34
par zeus
Et à quoi correspond les 2 premiers chiffres ? 00j00h00m ??

Il faudrait que tu nous explique la conception de ta base !!! Pour quelle raison tu as choisi un format non standart ?

Posté : 26 avr. 2005, 10:41
par Cyrano
non !!

00:14:00 00:18:00

c'est bien 14h => 18h
Si tu as enregistré ça dans un champ de type TIME dans une base de données, ça ne peut pas marcher: un champ TIME a pour format HH:mn:sec
Selon tes données, à quoi correspond donc le 00 du début ??

Posté : 26 avr. 2005, 10:42
par coolhead
standard ou pas standard la requete devrait je pense être similaire

le choix de mon coté est interne

Posté : 26 avr. 2005, 10:53
par Cyrano
Alors fais voir la requête que tu as conçue qu'on ait une base de départ, et la structure de la table, les types de champ sont important.

Posté : 26 avr. 2005, 10:54
par zeus
Essaye cette requete qui doit chercher sur les 2 caractères qui correspondent à l'heure

Code : Tout sélectionner

SELECT * FROM maTable WHERE CAST(SubString(reserv_debut,4,2) AS SIGNED) >= 12 AND CAST(SubString(reserv_fin,4,2) AS SIGNED) <= 14
Ca devrait extraire la partie heure de ton champ, le convertir en entier en tester sa valeur.

Si ta base est bien remplie (pas de debut après la fin !!! ^^ si si ça arrive !!!), ca pourrait fonctionner.

J'ai la flemme de créer une base donc je te laisse faire les tests et me tenir au courant du résultat !!!

Posté : 26 avr. 2005, 11:01
par coolhead
bon j'ai corriger ma connerie :

reserv_date
14:00:00

reserv_debut
18:00:00

au lieu de 00:14:00, ...

je vais donc essayé la requete :
SELECT * FROM maTable
WHERE CAST(SubString(reserv_debut,4,2) AS SIGNED) >= 12
AND CAST(SubString(reserv_fin,4,2) AS SIGNED) <= 14

mais avec SubString(reserv_debut,0,2) cette fois ? je suppose

Posté : 26 avr. 2005, 11:08
par coolhead
[code]SELECT * FROM maTable
WHERE CAST(SubString(reserv_debut,0,2) AS SIGNED) >= 10
AND CAST(SubString(reserv_fin,0,2) AS SIGNED) <= 17 [/code]

requete sans erreurs, mais sans même de résultats alors que j'ai bien une réserv de 10 à 17.

Je ne vois vraiment pas là ...

Posté : 26 avr. 2005, 11:14
par zeus
C'est ça, t'as tout compris !!!

Essaye de prendre entre 9 et 18 et de mettre < et > à la place de <= et >=

Posté : 26 avr. 2005, 11:15
par coolhead
En fait là ou ça se complique c'est que je peux avoir une réservation de 9h à 17h, par exemple.
Et passer une requete (que je ne parviens pas à construire) pour regarder si j'ai qql chose de 12h à 14h. => Sachant que la réponse doit être oui, j'ai qql chose, puisque j'ai de 9h à 17h !!!

Le problème est que dans la table j'ai 09:00:00 et 17:00:00; le 12:00:00 à 14:00:00 jene vois pas comment faire comprendre à ma requete que c'est inclu dans 09:00:00 et 17:00:00.

Posté : 26 avr. 2005, 11:23
par coolhead
SELECT * FROM reserv_salles
WHERE reserv_debut > '12:00:00'
AND reserv_fin < '14:00:00';

ok mais la je ne remonte pas ceux qui participe à cette tranche horaire mais ceux qui commencent et finissent exactement comme cela : 12 ; 14

Posté : 26 avr. 2005, 11:24
par albat
SELECT *
FROM   reserv_salles
WHERE  reserv_debut < '14:00:00'
   AND reserv_fin   > '12:00:00'

Posté : 26 avr. 2005, 11:29
par coolhead
[quote="albat"][php]SELECT *
FROM reserv_salles
WHERE reserv_debut < '14:00:00'
OR reserv_fin > '12:00:00'[/php][/quote]

ça j'ai déjà fais, mais c'est pas ok non plus car il prnd un réserv qui à lieu de 17h à 18 puisque : " reserv_fin > '12:00:00' "