加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

php – 行使MYSQL在日期之间选择行?

发布时间:2021-03-06 23:06:41 所属栏目:编程 来源:网络整理
导读:我有一些MYSQL的题目. 我必要可以或许搜查假期房间是否已经预订了一段时刻. 我的数据库行使DATETIME字段,如下所示: Database image link,as my rep is low 我有一个查询: SELECT * FROM `caravanavail1` WHERE (`checkIn` BETWEEN '2014-01-07 14:00:00' AND '

我有一些MYSQL的题目.

我必要可以或许搜查假期房间是否已经预订了一段时刻.

我的数据库行使DATETIME字段,如下所示:

Database image link,as my rep is low

我有一个查询:

SELECT * FROM `caravanavail1` 
WHERE (`checkIn` BETWEEN '2014-01-07 14:00:00' AND '2014-01-08 10:00:00') 
OR (`checkOut` BETWEEN '2014-01-07 14:00:00' AND '2014-01-08 10:00:00')

我将永久转达两个日期,但偶然日期也许会在许多方面产生斗嘴:

> checkIn也许在另一个假期的中间,checkOut也许没有.
> checkOut也许在另一个假期的中间,checkIn也许没有.
>他们也许与另一个假期沟通.
>我提供的checkIn和checkOut日期也许在另一个预订中.

我一向在摸不着头几天,任何人都可以帮我修复上面的SQL代码(我更喜好单个查询,而不是两个)来返回我必要的对象吗? 最佳谜底

        |________|      // date to book
    |______|            // condition 1
              |______|  // condition 2
          |____|        // condition 3 
    |________________|  // condition 4

假如这4个前提中的任何一个导致持续,这意味着无法完成预订.

$in =  '2014-01-07 14:00:00';
$out = '2014-01-08 10:00:00';

SELECT * 
FROM `caravanavail1` 
WHERE 
  (`checkIn` <= '$in' AND `checkOut` <= '$out') // condition 1
  OR 
  (`checkIn` >= '$in' AND `checkOut` >= '$out')  // condition 2
  OR 
  (`checkIn` >= '$in' AND `checkOut` <= '$out') // condition 3
  OR 
  (`checkIn` <= '$in' AND `checkOut` >= '$out') // condition 4

正如Marc B也指出的那样,这可以进一步简化:
全部前提的签到时刻都在您要预订的结账时刻之前.全部前提的退房时刻都在您要预订的入住时刻之后

归结为:

SELECT * 
FROM `caravanavail1` 
WHERE 
  (`checkIn` < '$out' AND `checkOut` > '$in')

偶然它有助于可视化:)

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读