2016-05-15 64 views
1

我們有一個日期示例:2016-05-10,我試圖從數據庫使用此日期查詢。在日期之間搜索YII

我們有2個表:publish_at和end_at

SELECT * FROM `news` WHERE end_at <= '2016-05-11' AND publish_at >= '2016-05-10' 

這將返回不正確的數據,因爲它並沒有顯示有publish_at的事件:2016年5月10日和2016年5月12日end_at

SELECT * FROM news WHERE '2016-05-11' BETWEEN publish_at AND end_at 

這將返回正確的項目,但如果日期是10或12不返回只有第一個查詢

之間

回答

0

因爲查詢傳請求,在2發佈的所有事件返回正確的數據016/05/10或之後,並於2016/05/11或之前結束。

更改查詢

Select * from news where end_at between '2016-05-10' and '2016-05-11' or publish_at betweeb '2016-05-10' and '2016-05-12' 
+0

每天都需要它沒有結束倍數天 –

+0

能understebd您的要求,正是whar你需要什麼? – user3600910

+0

基本上得到該日期之間的事件示例 事件1:開始05.10結束05.12 事件2:開始05.11結束05.11 SELECT * FROM'news' WHERE end_at <='2016-05-11'AND publish_at> ='2016 -05-10' 這應該顯示這兩個事件 –