我需要根据MySQL表中的一系列日期范围搜索用户的日期范围输入。
也许一个例子可以更好地解释这一点。假设我有一个带有“费率”表的“酒店”数据库。一行是“秋天”,从 9月1日到11月30日,另一行是“冬天”,从 12月1日到3月30日,其中还有其他列。客人预订的房间重叠两个房价。他将在那里度过感恩节,并在12月初离开。这将包括两个单独的费率。我需要运行一个搜索,返回客人住宿期间的每个“费率”行。
仅当客人的预订完全包含在一个(且仅限一个)费率时才有效:
SELECT * FROM 'rates' WHERE start < $guestArrive AND end > $guestDepart
有什么想法吗?
答案 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)