查找所有日期范围

时间:2015-02-02 20:01:23

标签: php mysql

我有一张MySQL住宿表,其中每个住宿都使用from_dateto_date列定义。我希望找到所有留在用户定义的范围内。例如,假设从01.01.201501.03.2015停留,我希望此条目包含在01.01.201531.01.2015以及01.02.2015的报告中到28.02.201501.03.201531.03.2015。 我把所有东西都存储为时间戳(以秒为单位)。 有人可以举例说明如何实现这个目标吗?

3 个答案:

答案 0 :(得分:1)

您可以使用BETWEEN选择两个值之间的日期,并将其与OR组合,以便您选择从日期或到日期:

SELECT * FROM your_table 
WHERE (from_date BETWEEN 'date_1' AND 'date_2')
OR (to_date BETWEEN 'date_1' AND 'date_2');

有关详细信息,请参阅此related answer,请注意,您需要将用户输入日期转换为时间戳,或将时间戳转换为比较日期。

答案 1 :(得分:1)

摘要MySQL查询:

select *
from table_of_stays
where ( date($stay_from_date) 
        between date($report-start-date) and date($report-end-date)) 
and (date($stay_to_date) < date($report-end-date))

答案 2 :(得分:1)

好的,多亏了其他答案,我得到了最好的结果 mysql中的(stay_range_start<=selected_range_end) && (stay_range_end>=selected_range_start)

SELECT * FROM stays
WHERE  `t0`.`from_date` <= $to_date 
AND `t0`.`to_date` >= $from_date