使用包含多列的日期范围

时间:2014-12-15 23:08:52

标签: php mysql pdo

我准备了mysql查询,按日期范围搜索:

select * from active_listings 
where open_date >= '$start_date' 
  AND open_date <='$end_date'

效果很好。

我在mysql中有两列:open_date和next_open_date。如何执行包含open_datenext_open_date

的范围子句

我尝试过:

select * from active_listings 
where (open_date,next_open_date) >= '$start_date' 
  AND (open_date,next_open_date) <='$end_date')

我没有结果。

有人可以指导我或向我说明如何在日期范围内使用多列。

谢谢!

2 个答案:

答案 0 :(得分:2)

为避免歧义,您必须将范围分开,如下所示:

select * 
from active_listings 
where (open_date >= '$start_date' AND open_date <='$end_date') 
  OR (next_open_date >= '$start_date' AND next_open_date <='$end_date');

或者,有点短:

select * 
from active_listings 
WHERE open_date BETWEEN '$start_date' AND '$end_date'
  OR next_open_date BETWEEN '$start_date' AND '$end_date';

答案 1 :(得分:1)

不完全确定你想要什么......你是在尝试计算重叠时期还是什么?

提示:您可以使用BETWEEN子句替换&#34;大于等于AND小于等于&#34;的组合。条件。

SELECT * 
FROM active_listings 
WHERE 
    open_date BETWEEN '$start_date' AND '$end_date' OR
    next_open_date BETWEEN '$start_date' AND '$end_date'