2011-12-10 147 views
1

我有一個表:SQL操作日期查詢,找到之間的日期迄今

rommbookinfo 
(
    hotel_id 
    , room_no 
    , start_date 
    , end_date 
); 

現在,我必須執行一個查詢發現房間對於未在預訂指定酒店(酒店ID)日期範圍(即在DATE1和date2之間)

SELECT * 
FROM tbl_roombook 
WHERE hotel_id = '2' 
    AND start_date NOT BETWEEN 12/17/2011 AND 12/19/2011 
    OR end_date NOT BETWEEN 12/17/2011 AND 12/19/2011 

,但它引發以下錯誤:

#1064 - You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use near 
''SELECT * FROM tbl_roombook WHERE hotel_id='2' AND start_date' at line 1 
+0

你的問題是什麼?什麼不工作?你期望的輸入/輸出是什麼? – ajreal

+0

@Boruah - 語法錯誤是因爲日期需要在引號中。這並不重要 - 你的查詢無論如何不會起作用。 Charles Bretana的解決方案看起來應該起作用。請嘗試一下,如果有,請將其標記爲「已接受」! – paulsm4

+0

這段代碼在哪裏被調用,我認爲單引號導致你的問題 – Sparky

回答

2

嘗試

Select distinct room_no 
    From tbl_roombook rb 
    Where hotel_id = '$h_id' 
    And Not Exists 
     (Select * From tbl_roombook 
     Where hotel_id = rb.Hotel_id 
      And room_No = rb.room_no 
      And start_date <= $date2 
      And end_Date >= $date1) 
+0

喜查爾斯BRETANA,當日期字段爲varchar,您的查詢將工作 – Bharanikumar

+0

因爲@Boruah傳遞日期像12/17/2011,所以查詢認爲這是字符串,請澄清它 – Bharanikumar

+0

沒有日期,結束日期不爲varchar,而他們是在約會甲在表 – Boruah