2016-01-11 2 views
6

Ich habe Check-Room ist zwischen zwei Zeit für bestimmtes Datum existiert.Mysql zu überprüfen Zimmer existiert für ein bestimmtes Datum mit der Dauer

MY TABLE LIKE THIS

Ich habe versuchen folgenden zwei Abfrage seine laufen einige Zeit Rechte aber, wenn ich von 10.00 bis 12.00 Uhr zum Zeitpunkt falschen Ergebnissen wählen bedeutet keine Datensätze zurück.

QUERY-1:

SELECT 1 FROM `timetable_details` WHERE (
     ((`td_from` <= '10:00:00') AND (`td_to` > '10:00:00')) 
     OR 
     ((`td_from` < '12:20:00') AND (`td_to` >= '12:20:00')) 

    ) AND ((`td_room`='1') AND (`td_date`='2016-01-25')) 

QUERY-2:

SELECT 1 FROM `timetable_details` WHERE (
      (`td_from` > '07:00:00') AND (`td_to` < '08:00:00') 
    ) AND ((`td_room`='1') AND (`td_date`='2016-01-25')) 

Ich habe td_id = 4 Nummer Reihe bekommen, ist aber nicht zurückkehrt.

Vielen Dank im Voraus.

+0

Verwenden Sie MySQL oder SQlite oder? Kenne keine Produkte, die nicht involviert sind ... – jarlh

+0

@jarlh Ok, Sir Ich entferne das Tag, ich benutze 'MySQL' –

+0

Die td_from und td_to, werden sie als datetime deklariert? – Trevor

Antwort

3

Sie können wie unten between mit OR condition für beide Spalten verwenden:

SELECT 1 FROM `timetable_details` WHERE (((((`td_from` BETWEEN '10:00:00' AND '12:30:00') OR (`td_to` BETWEEN '10:00:00' AND '12:30:00')) AND ((`td_room`='1') AND (`td_date`='2016-01-25') AND (`td_status` IS NULL))) AND (`td_from` <> '12:30:00')) AND (`td_to` <> '10:00:00')) 

Hoffe, dass Sie die richtige Ergebnis bekommen.

Verwandte Themen