我有一张MySQL住宿表,其中每个住宿都使用from_date
和to_date
列定义。我希望找到所有留在用户定义的范围内。例如,假设从01.01.2015
到01.03.2015
停留,我希望此条目包含在01.01.2015
到31.01.2015
以及01.02.2015
的报告中到28.02.2015
和01.03.2015
到31.03.2015
。
我把所有东西都存储为时间戳(以秒为单位)。
有人可以举例说明如何实现这个目标吗?
答案 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