mysql - 在mysql中获取开始时间和结束时间之间的30分钟间隔数据

标签 mysql sql

我在mysql中有表结构,

table_id  no_people  booking_date  bookingend_time      bookingstart_time
      14          2  2014-10-31    2014-10-31 13:30:00  2014-10-31 11:00:00
       5          4  2014-10-31    2014-10-31 16:30:00  2014-10-31 14:30:00
       6          2  2014-10-31    2014-10-31 17:00:00  2014-10-31 16:00:00
       2          4  2014-11-06    2014-11-06 12:30:00  2014-11-06 10:00:00
       2          4  2014-10-31    2014-10-31 16:00:00  2014-10-31 14:00:00
       3          4  2014-11-01    2014-11-01 09:00:00  2014-11-01 07:30:00
       6          2  2014-11-01    2014-11-01 10:00:00  2014-11-01 07:30:00
       2          4  2014-11-03    2014-11-03 10:30:00  2014-11-03 08:30:00
       5          4  2014-11-04    2014-11-04 10:30:00  2014-11-04 08:30:00
       3          4  2014-11-05    2014-11-05 09:30:00  2014-11-05 07:30:00
      14          2  2014-11-05    2014-11-05 09:30:00  2014-11-05 07:30:00

我想检索开始和结束时间间隔为 30 分钟的 table_id 数据。

例如: 如果我给预订开始时间 10:30 和结束时间 12:30 我应该得到 14 作为行.. 同样,它应该检查所有行并在两次之间返回..

到目前为止我的查询

SELECT `table_id` FROM `booking` WHERE bookingstart_time>='2014-10-31 10:30:00' AND bookingend_time<='2014-10-31 11:30:00'

最佳答案

第 1 步:将输入时间范围扩大 30 分钟前和 30 分钟后。 DATE_ADD() DATE_SUB() 可以做到这一点:

DATE_SUB(_input_start_date_here_, INTERVAL 30 MINUTE)

第 2 步:根据开始时间和结束时间重新考虑您的问题。以下是可能的情况:

  • 如果预订在(扩展的)期间开始,那么您希望在结果中包含此预订
  • 或者如果预订在期间开始,那么您想要此预订,除非它也在期间结束
  • 另一方面,如果预订是在时间段之后开始的,那么您不希望进行此预订

上面的第一种情况可以这样表示:

WHERE bookingstart_time >= DATE_SUB(_input_start_date_here_, INTERVAL 30 MINUTE)
AND bookingstart_time <= DATE_ADD(_input_end_date_here_, INTERVAL 30 MINUTE)

第二个条件留作练习。你也可以用更优雅的 BETWEEN 重写上面的内容运营商。

关于mysql - 在mysql中获取开始时间和结束时间之间的30分钟间隔数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27046814/

相关文章:

mysql - 使用mysqldump导入到RDS

sql - T-SQL 嵌套子查询

mysql - phpmyadmin - sql 查询错误

sql - 选择事务作为单行

mysql - SQL 中多表的多重计数

javascript - 我想使用 ajax 编辑进入 while 循环的品牌名称,数据在输入类型 =“文本”中

mysql - 使用 MySQL 与 NoSQL 的单个服务器上的 Key-Value 数据库是否存在高性能差异

DataReader 循环查询中的 C# MySQL 查询

c# - 对如何使用 List<string>[] 感到困惑

mysql - SQL 查询优化——真的没有什么可以改进的了吗?