2012-07-27 62 views
0

我有一個表「會議」已下列領域MySQL查詢過濾日期條件在PHP中的特定行?

id recurring_start_date recurring_end_date (Both are date fields) 
1. 2012-07-22    2012-07-25 
2. 2012-07-27    2012-08-05 
3. 2012-07-26    2012-08-26 
4. 2012-07-23    2012-10-23 
5. 2012-08-24    2012-11-24 
6. 2012-09-12    2012-10-19 
7. 2012-07-28    2012-07-29 

我要過濾通過SQL查詢包含開始 - 結束「2012-07-28」日之間那些行重複日期範圍幷包括開始n結束重複日期。

我們知道結果將是第2,3,4,7行。
但我如何在php中運行此查詢。

我試過這個,但它不工作。

$sql = " 
    SELECT * 
    FROM 
     `meetingss` 
    WHERE 
     `recurring_st_date` >= \'2012-07-28\' 
     AND `recurring_ed_date` <= \'2012-07-28\' 
    "; 

可能是我走錯了,可供應日期條件是錯誤的。
任何好的建議我的隊友做到這一點。謝謝...

+1

這些是日期字段或varchar? – 2012-07-27 12:51:49

+0

都是'日期'字段。 – Frank 2012-07-27 12:53:09

回答

5
$sql = "SELECT * FROM `meetings` 
     WHERE date('2012-07-28') 
       between `recurring_st_date` AND `recurring_ed_date`"; 
+0

您可能需要將字符串'2012-07-28'顯式轉換爲日期。至少它會更便攜。 – 2012-07-27 13:11:25

+1

轉換不是必須的,才能使其正常工作。但是便攜是一個很好的觀點。 – 2012-07-27 13:12:54

+0

@juergend感謝您的出色工作。 – Frank 2012-07-28 10:55:17

2
`recurring_st_date` >= STR_TO_DATE('2012-07-28', '%Y-%m-%d') AND 
`recurring_ed_date` <= STR_TO_DATE('2012-07-28', '%Y-%m-%d') 
0

刪除反斜槓

`recurring_st_date` >= '2012-07-28' 
AND `recurring_ed_date` <= '2012-07-28'