2013-10-01 46 views
0

兩個日期之間的所有日期和日期,這是原來的查詢搜索與我有麻煩如何做到這一點的具體時間

$this->db->query(
    ' 
    SELECT 
     * 
    FROM 
     lodgebookings 
    WHERE 
     lodge_name = "willow" 
    AND 
     (
      (
       checkin_date_user BETWEEN "' . date('Y-m-d',strtotime($book_date)) . ' 14:30:00" 
      AND 
       "' . date('Y-m-d',strtotime('+1 day',strtotime($book_date))) . ' 11:30:00" 
      ) 
     OR 
      (
       "' . date('Y-m-d',strtotime($book_date)) . ' 14:30:00" 
      BETWEEN 
       checkin_date_user 
      AND 
       checkout_date_user 
      ) 
     ) 
    ' 
); 

現在這個查詢取決於$ book_date 數據只返回了什麼我想要做的就是返回數據,不$ book_date,這意味着所有日期 和所有checkin_date_user和checkout_date_user有 時間之間的所有日期14:30:00

更新:我已經使用的時間,這是我的代碼

$query = $this->db->query(
    ' 
     SELECT 
      * 
     FROM 
      lodgebookings 
     WHERE 
      lodge_name = "willow" 
     AND 
      TIME(checkin_date_user) = "14:30:00" 
     AND 
      (
       (
        "' . date('Y-m-d', strtotime($book_date)) . ' 14:30:00" 
       BETWEEN 
        checkin_date_user 
       AND 
        checkout_date_user 
       ) 
      ) 
     ' 
    ); 

它仍然需要$ book_date,當然也只會返回數據取決於$ book_date..if我不使用$ book_date返回null

更新:真的

實際上它將不返回任何東西,因爲我只有11:30:00所有checkout_date_user .. 如果例如 checkin = 2013-10-19 14:30:00
結帳= 2013-10-20 11:30: 00 我不會有任何問題,我可以只是查詢登記 我的問題是在日期之間3210籤= 2013年10月19日14:30:00
結賬= 2013年10月21日11:30:00

我需要結帳日期之前獲得的日期

+0

使用'time()'函數來搜索時間。 –

+0

@ Nil'z請參閱我的問題的更新..我已經使用時間()..謝謝 –

+0

select * from table where lodge_name =「willow」AND(time(checkin_date_user)= '14:00:00'and time(checkout_date_user)= '14:00:00') –

回答

0

試試這個:

select * from my_table where checkout_date_user < date_add(checkout_date_user, - interval 1 day) AND checkin_date_user >= date_add(checkin_date_user, interval 1 day) 
+0

我想我貼錯了請糾正我。 SELECT * FROM lodgebookings WHERE checkout_date_user = DATE_ADD(checkin_date_user,間隔1天) 這是代碼: (checkout_date_user,<時間間隔1天)AND checkin_date_user> = date_add(checkin_date_user,interval 1 day)'); –

+0

我的錯誤是 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在' - interval 1 day'附近使用正確的語法'AND checkin_date_user> = date_add(checkin_date_user,interval'at line 1 –