我需要根据MySQL表中的一系列日期范围搜索用户的日期范围输入。
也许一个例子可以更好地解释这一点。假设我有一个带有"价格"表的"酒店"数据库。一行是 9 月 1 日至 11 月 30 日的"秋季",另一行是 12 月 1 日至 3 月 30 日的"冬季",其中还有其他列。客人预订的房间与两种房价重叠。他将在那里过感恩节,并在12月初离开。这将涵盖两个单独的费率。我需要运行一个搜索,返回客人住宿内的每一行"房价"行。
这仅适用于客人的预订完全在一个(且只有一个)房价内的情况:
SELECT * FROM 'rates' WHERE start < $guestArrive AND end > $guestDepart
有什么想法吗?
开始日期和结束日期是否相互排斥? 你能这样做吗:
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)