我需要根据 MySQL 表中的一系列日期范围搜索用户输入的日期范围。
也许一个例子可以更好地解释这一点。假设我有一个带有“价格”表的“酒店”数据库。一行是“秋季”,从 9 月 1 日到 11 月 30 日,另一行是“冬季”,从 12 月 1 日到 3 月 30 日,其中还有其他列。一位客人预订的房间与两个房价重叠。他将在那里过感恩节,并于十二月初离开。这将涵盖两个单独的费率。我需要运行一个搜索,返回客人入住期间的每个“房价”行。
仅当客人的预订完全在一个(且仅一个)房价内时,此功能才有效:
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)
关于php - 用户日期范围输入与 MySQL 中的一系列日期范围相比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19885800/