0

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

也许一个例子可以更好地解释这一点。假设我有一个带有“Rates”表的“Hotel”数据库。一行是“Fall”,从9 月 1 日到 11 月 30日,另一行是“Winter”,从12 月 1 日到 3 月 30 日,还有其他列。一位客人预订的房间重叠了两种价格。他将在那里过感恩节,并在 12 月初离开。这将涵盖两个不同的费率。我需要运行一个搜索,返回客人入住期间的每个“Rate”行。

这仅适用于客人的预订完全在一个(且只有一个)价格范围内:

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

有任何想法吗?

4

1 回答 1

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)
于 2013-11-10T04:07:13.143 回答