2012-07-27 71 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'