用户日期范围输入与MySQL中的一系列日期范围

时间:2013-11-10 03:01:27

标签: php mysql date date-range

我需要根据MySQL表中的一系列日期范围搜索用户的日期范围输入。

也许一个例子可以更好地解释这一点。假设我有一个带有“费率”表的“酒店”数据库。一行是“秋天”,从 9月1日到11月30日,另一行是“冬天”,从 12月1日到3月30日,其中还有其他列。客人预订的房间重叠两个房价。他将在那里度过感恩节,并在12月初离开。这将包括两个单独的费率。我需要运行一个搜索,返回客人住宿期间的每个“费率”行。

仅当客人的预订完全包含在一个(且仅限一个)费率时才有效:

SELECT * FROM 'rates' WHERE start < $guestArrive AND end > $guestDepart

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

开始日期和结束日期是否相互排斥?你能做到这一点:

SELECT * FROM 'rates' 
WHERE 
    (start <= $guestArrive AND $guestArrive <= end)
    OR
    (start <= $guestDepart and $guestDepart <= end)

或更清楚:

SELECT * FROM 'rates' 
WHERE 
    ($guestArrive BETWEEN start AND end)
    OR
    ($guestDepart BETWEEN start AND end)