2016-01-11 4 views
6

Mam pokój kontroli istnieje między dwoma godzinami dla konkretnej daty.mysql do sprawdzenia pokoju istnieje dla określonej daty z czasem trwania

MY TABLE LIKE THIS

mam spróbować następujących dwóch zapytaniu swój bieg czasu, ale pewne prawa, kiedy wybrać 10:00 do 12:00 po południu w czasie złych wyników oznacza nie zwraca żadnych rekordów.

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')) 

mam dostać td_id = 4 numer wiersza, ale nie wraca.

Z góry dziękuję.

+0

Czy używasz MySQL lub SQlite lub? Nie taguj produktów nie związanych ... – jarlh

+0

@jarlh Ok, sir I usunąć tag, użyłem 'MySQL' –

+0

Td_from i td_to, są zadeklarowane jako datetime? – Trevor

Odpowiedz

3

Można użyć between z OR condition dla obu kolumnach, jak poniżej:

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')) 

Nadzieję dostaniesz właściwego rezultatu.

Powiązane problemy