php - 用户日期范围输入与 MySQL 中的一系列日期范围相比较

标签 php mysql date date-range

我需要根据 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/

相关文章:

php - 从两个表中选择查询

php - 检查 SQL 数据库中不存在的值

javascript - Bootstrap 的日期选择器(仅选择周并使其在 IE 中工作)

php - SQL 将行从一个表移动到另一个具有不匹配列的表

php - 拒绝用户在不存在的数据库上执行 SELECT 命令

sql - 如何使用日历规则在 SQL 中获取一年中的一周?

mysql - 将 mysql 日期转换为 NSDate

php - 我如何知道 SoapClient 在 php 中使用哪个 SSL 版本?

php - 使用 CURL 像浏览器一样下载 ffmpeg

PHP解析关联数组