【问题标题】:MYSQL : Find records between particular periodMYSQL:查找特定时期之间的记录
【发布时间】:2014-12-02 07:27:23
【问题描述】:

我有一个名为“checkInGuestUsers”的表,其中有像 'checkInTime(DATETIME), checkOutTime(DATETIME),rooms(varchar) 这样的列

有特定用户在特定时间预订了一些房间,

UserId   checkInTime         checkOutTime              rooms

25     2014-12-04 00:00:00   2014-12-05 23:59:59       101,102

现在另一个用户或同一个用户想在里面预订房间

"2014-12-03 00:00:00" to "2014-12-04 23:59:59" OR
"2014-12-04 00:00:00" to "2014-12-04 23:59:59"

然后系统应返回除 101,102 之外的所有房间列表,因为这些房间已被预订 “2014-12-04 00:00:00”到“2014-12-04 23:59:59”

我想要一个 SQL 查询,例如,如果我从上述两者之一中选择时间,那么它将返回在该时间段内预订的房间。

我已经尝试在 SQL 中使用介于和大于或小于条件,但未能得到准确的结果。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    从 checkInTime 为 null 或 checkOutTime 的房间中选择 room_id

    这是作业吗?

    【讨论】:

    • 在您已经给出问题的答案之后再问。
    • 是的,我不知道我是否应该……主要是为了羞辱他们。该网站有推荐的政策吗?
    【解决方案2】:
    select r.* 
    from rooms r
      left join checkInGuestUsers g 
      on g.rooms like r.<room_no>  -- actually not a good condition, should be improved
         and g.checkInTime <= {:book_to} and g.checkOutTime >= {:book_from}
    where g.rooms is null
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-27
      • 2021-07-19
      • 2018-11-30
      • 2013-06-04
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多