检查 MySQL 中的日期范围冲突

2024-03-06

我正在写一个酒店预订系统。经过大量研究(包括堆栈溢出),我编写了这个 sql 来查找空闲房间:

SELECT
*
FROM room
WHERE
    room_id NOT IN (
        SELECT room_id
        FROM bookings
        WHERE
                 checkin <= '$check_in'
            AND checkout >= '$check_out'
    )

但问题是它没有考虑到检查时间是 12:00:00 而结账时间是 11:59:00

而且它没有给出正确的查询,例如在日期范围内,它不起作用,就像我从 15-18 预订一个编号为 501 的单人房间一样。如果我再次运行查询 17-19,这个房间似乎是免费的,但实际上应该是占据。

任何人都可以建议一个非常好的和有效的sql,它将获得准确的日期,这样预订系统就不会发生冲突,因为系统将在真实中实施,所以错误会导致很多问题。

提前致谢


您遇到的问题是您的查询不够稳健。当你分解这个问题时,你得到的是这样的:

如果范围定义为$check_in and $check_out与定义的范围重叠checkin and checkout in any方式,然后房间就订好了。否则,它是免费的。

这意味着:

  • If $check_in >= checkin and $check_in <= checkout,房间是BOOKED
  • OR If $check_out >= checkin and $check_out <= checkout,房间是BOOKED
  • OR If $check_in <= checkin and $check_out >= checkout,房间是BOOKED

因此,您需要在子查询中表示这两种情况,以便获取您正在查找的信息。

另外,您希望会使用datetime供您比较,而不仅仅是time,否则会有副作用。

编辑:SQL 查询

(请记住,可以这么说,剥猫皮的方法不止一种。我只是提供一个尽可能与您已有的内容保持一致的示例。再一次,我还假设checkin, checkout, $check_in, and $check_out都将决心datetime types)

SELECT *
FROM room
WHERE room_id NOT IN
(SELECT room_id 
 FROM bookings
 WHERE
   (checkin <= '$check_in' AND checkout >= '$check_in') OR
   (checkin <= '$check_out' AND checkout >= '$check_out') OR
   (checkin >= '$check_in' AND checkout <= '$check_out'))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 MySQL 中的日期范围冲突 的相关文章

  • 在 php 中为类自动生成 getter 和 setter 的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我经常创建一个包含一些私有变量的类 当设置此类的实例时 应该可以使用 getter 和 setter 填充该类的所有变量 有没有一种简单的方法可
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • 将“php”作为 shell 脚本执行时的自定义 php.ini 文件

    我在跑php作为 shell 脚本 我不确定 shell脚本 是否正确 该文件以 usr bin php 这很好用 但 MongoDB 类没有正确加载php ini文件 具有extension mongo so 未使用 我该如何使用它tha
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 如何在原则 2 迁移中删除外键

    我想在原则 2 迁移中删除外键 但没有 dropForeignKeyConstraint 有谁知道怎么丢掉吗 public function down Schema schema table schema gt getTable table
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • “使用未定义常量”注意,但该常量应该被定义

    共有三个文件 common php controller php 和 user php 文件 common php 如下所示 文件controller php看起来像 文件 user php 如下所示 执行脚本时 会给出通知 注意 使用未定
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • 动态类定义的酸洗

    我正在尝试将动态生成的类作为替代类的工厂 像下面这样 import sys pickle class BC object pass C type NewClassName BC pickle dump C sys stdout 这会导致以下
  • 谷歌地图 V3 JS 没有发生 UIWebView iOS 6(iPhone) 的“中心更改”

    我正在尝试显示GoogleMap Google maps V3 JS in UIWebView ios6 but 当我在网络视图中移动地图时 事件没有发生center changed 移动地图已完成 事件火 Why 有人告诉我页面 http
  • PHP使用时区函数的时差?

    我试图找到一种方法来使用 PHP 中的时区函数显示两个位置之间的时间差异 http php net manual en timezones php http php net manual en timezones php 假设我从上面的链接
  • Excel VBA - 运行时错误“9”,下标超出范围

    我真的很感谢我能得到的任何帮助 我试图循环遍历一列 查找重复的名称 然后从同一行获取该名称和其他几个数据 并将它们放入一个我想使用另一个函数的二维数组中 但它不起作用 我真的需要你的帮助来弄清楚为什么我不能在不保留数据的情况下重新调整这个数
  • Web 音频 API - 如何将音频缓冲区保存到包含所有更改的文件?

    我对音频缓冲区 例如增益和平移 进行了更改 并将它们连接到音频上下文 现在我想将所有已实施的更改保存到一个文件中 按原样保存缓冲区将为我提供未经更改的原始音频 有任何方法或程序可以做到这一点吗 方法是使用MediaRecorder保存修改后
  • java中继承私有字段

    如果子类不能从超类继承私有成员 但它从超类继承公共方法 这些方法可以访问未继承的私有成员 如此处所述 http docs oracle com javase tutorial java IandI subclasses html http
  • 无法找到 Microsoft 认知服务的订阅密钥

    I need to work on Microsoft Cognitive Services Face API I downloaded the code from https github com Microsoft Cognitive
  • CLARION 日期转换 C# + 日期加/减

    这是针对 ISV 数据库的 所以我对此进行了逆向工程并且无法更改 我如何在 C 中执行以下日期到 int visa versa 转换 所以说日期是 5 17 2012 它被转换为 int 77207 在数据库中 起初我以为这是儒略日期 但事
  • => 和 () => 在 Scala 中意味着什么[重复]

    这个问题在这里已经有答案了 我是 Scala 的新手 我真的很喜欢它 但有时它会让我感到惊讶 例如 clickedCallbacks List gt Unit 谁能告诉我什么 gt and gt 在斯卡拉中是什么意思 gt 是用于创建函数实
  • C# 和 SQL Server 中 int 到 guid 的不同转换

    在 C 和 SQL Server 中将 int 转换为 guid 时 我得到不同的值 在C 中我使用这个方法 public static Guid Int2Guid int value byte bytes new byte 16 BitC
  • Ant 无法删除 Windows 上的某些文件

    我有一个 ant 构建 可以创建目录 调用 javac 和所有常规内容 我遇到的问题是 当我尝试执行清理 删除生成的所有内容 时 删除任务报告无法删除某些文件 当我尝试手动删除它们时 效果很好 这些文件显然没有被任何其他进程打开 但 ant
  • 使用 CALayer 委托

    我有一个 UIView 其图层将有子图层 我想为每个子图层分配委托 因此委托方法可以告诉图层要绘制什么 我的问题是 作为 CALayer 的代表我应该提供什么 文档说不要使用图层所在的 UIView 因为这是为视图的主 CALayer 保留
  • 自定义控件中的选择器

    我正在建立一些表格 使用TableView 并注意到我对单元格的样式设置相同 我决定将这段重复的代码重构为一个公共控件 I am struggling to get the binding to work on the picker cor
  • 如何暂停在终端中运行的Python脚本

    我有一个网络爬行 python 脚本在终端中运行了几个小时 它不断填充我的数据库 它有几个嵌套的 for 循环 由于某些原因 我需要重新启动计算机并从我离开的位置继续执行脚本 是否可以保留指针状态并恢复之前在终端中运行的脚本 我正在寻找一种
  • ShellExecute 对于本地 html 或文件 URL 失败

    我们公司正在将我们的帮助系统迁移到 Flare 下的 HTML5 格式 我们还在 URI 命令行上使用 Flare CSHID 添加了对帮助系统的基于主题的访问 以便直接访问主题 例如index html CSHID GettingStar
  • MVC中如何定义img src路径

    我的 index cshtml 带有图像 里面还有一个Images文件夹myApp Images folder 如果我访问 http localhost myApp 或 http localhost myApp home 工作正常 但如果我
  • gcc 是否会根据条件优化我的循环?

    我有以下循环 condition will be set here to true or false for int i 0 i lt LARGE NUMBER i if condition do foo else do bar 假设 无条
  • 如何设计一个带有“注释”字段的类?

    想象一下 我们有某种包含数百种消息类型的协议 我们希望通过 C 类对每种消息类型进行建模 由于每个类应该能够自动处理每个字段 一个自然的解决方案是只拥有一个std tuple具有所有必需的类型 std tuple
  • “平面文件源”(471) 预执行阶段失败并返回错误代码 0xC020200E。我该如何阻止这种情况发生?

    你好 我想知道你是否可以帮忙 每个星期我都会收到这个错误 平面文件源 471 预执行阶段失败并返回错误代码 0xC020200E 无法打开数据文件 G Data 待处理 RO Orders csv 我知道 如果我进入平面文件连接管理器编辑器
  • 检查 MySQL 中的日期范围冲突

    我正在写一个酒店预订系统 经过大量研究 包括堆栈溢出 我编写了这个 sql 来查找空闲房间 SELECT FROM room WHERE room id NOT IN SELECT room id FROM bookings WHERE c