2010-10-23 6 views
1

Im coincé avec cela et besoin d'aide.vérifier les chevauchements heures de début, MySQL

SELECT COUNT(id) AS counter 
    FROM time_reporter 
WHERE user_id='$user_id' 
    AND actual_date = '$date' 
    AND ((start_time > '$start_time' AND end_time < '$end_time')) 

Il vérifie ok si dans la plage mais je dois vous assurer que s'il n'y a pas pu être inséré un début d'enregistrement, heure de fin si l'enregistrement suivant ...

si un enregistrement a end_time exemple 22: 30 l'enregistrement suivant ne peut pas avoir start_time 22:15 etc ... donc avec cela je ne peux pas compter est ...

Donc le prochain enregistrement ne se chevauchera pas ou n'interférera pas les intervalles de temps existants dans la même journée et par le même utilisateur ... Aussi serait agréable d'obtenir la gamme de temps disponible (créneaux horaires libres) serait ma deuxième question ...

Nous vous remercions à l'avance

toute aide appréciée Merci

Répondre

0
SELECT COUNT(id) AS counter FROM time_reporter WHERE user_id='$user_id' AND actual_date = '$date' AND ((start_time > '$start_time' AND end_time < '$end_time') OR (end_time > '$start_time' AND end_time < '$end_time')) 

Je pense trouvé une solution du code ci-dessus empêche start_time, end_time chevauchement ...

eaxmple

22:00 22:15

22:15 23:15

mais se trompe encore ... 23:00 23:45

il pourrait y avoir des améliorations pour le rendre l'épreuve des balles ...

0

Essayez cette requête pour trouver chevaucher temps de tâche sur mysql

SELECT * FROM your_table Where (('2014-02-05 20:00:00' <= end_time and '2014-02-05 20:00:00' > start_time) OR (IF(('2014-02-05 08:00:00' < end_time),IF('2014-02-05 08:00:00'>=start_time,false,IF('2014-02-05 20:00:00'>start_time,true,false)) ,false)) OR ('2014-02-05 08:00:00' =start_time and '2014-02-05 20:00:00'=end_time)) and user_id =116 
Questions connexes