2015-04-14 62 views
2

我的表包含event_start日期和event_end日期。MySQL where子句獲取下週事件

我很困惑如何獲得下週的活動。以下變量具有下週的開始日期和結束日期。

$day = date('w'); 
$next_week_start = date('Y-m-d', strtotime('+'.(7-$day).' days')); 
$next_week_end = date('Y-m-d', strtotime('+'.(7+(6-$day)).' days')); 

我想獲得下週活動的活動。

這就是我現在擁有的。這裏EVENT_SCHEDULE是表名,event_date是事件開始日期。

$where .= " AND ((" . EVENT_SCHEDULE . ".event_date >= '" . $next_week_start . "' AND " . EVENT_SCHEDULE . ".event_date <= '" . $next_week_end . "') OR (" . EVENT_SCHEDULE . ".event_enddate >= '" . $next_week_start . "' AND " . EVENT_SCHEDULE . ".event_enddate <= '" . $next_week_end . "')) "; 

有人可以幫我where條款的查詢嗎?

+0

你可以用一些示例數據製作一個sql-fiddle,告訴我們你現在得到了什麼以及你期望的結果嗎? – Naruto

+0

Where子句顯示您的事件具有開始和結束日期,因此我假設您需要在選定周內部分或全部的所有事件。你可能想編輯你的問題 –

+0

@Naruto感謝您的提示。下一次,我會這樣做 – Giri

回答

2

假設開始和結束變量正確計算 你應該能夠使用

 $where .= "AND (" . 
EVENT_SCHEDULE . ".event_date <= '".$next_week_end."' AND " . 
EVENT_SCHEDULE . ".event_enddate >='" . $next_week_start."') "; 

下面是相同的代碼,但與MySQL服務器上完成的日期計算 - 我假設的一週星期一到星期天

$where .= "AND (" . 
    EVENT_SCHEDULE . ".event_date <= date(Now()+interval 14-date_format(Now(),'%w') day) AND " . 
    EVENT_SCHEDULE . ".event_enddate >= date(Now()+interval 8-date_format(Now(),'%w') day)) "; 
+0

謝謝,你的代碼工作正常。 – Giri

0

我不知道你的字段event_date有什麼數據類型,但是如果它是一個Unix時間,你不應該創建一個人類可讀的時間字符串,而是一個unix時間戳。但這取決於你的數據庫方案。你還沒有提供實際的問題。你提供的where子句對我來說很好。

+0

where子句不會捕獲在本週開始之前已經開始的事件,並且在結束之後處於活動狀態,所以我認爲這是他的問題 –

+0

確實,沒有想到這一點! – bastianowicz