2016-01-11 13 views
6

Belirli bir tarih için iki kez kontrol odası var. i tüm kayıtları döndüren demektir zaman yanlış sonuçlara 12:00 10:00 AM seçtiğinizdemysql odası kontrol etmek için belirli bir tarihte saatin bulunduğu bir süredir var.

MY TABLE LIKE THIS

Ben, iki sorgu onun koşmak biraz zaman haklarını aşağıdaki ancak deneyin var.

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

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

Ben td_id = 4 sayı satır almak var ama döner değil.

Şimdiden teşekkürler.

+0

MySQL veya SQlite veya kullanıyor musunuz? Dahil olmayan ürünleri etiketlemeyin ... – jarlh

+0

@jarlh Tamam, efendim etiketi kaldırırım, 'MySQL' –

+0

kullandım td_from ve td_to, bunlar datetime olarak ilan edildi mi? – Trevor

cevap

3

Sen olarak aşağıda her iki sütun için OR condition ile between kullanabilirsiniz:

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

Doğru sonuç elde umuyoruz.

İlgili konular