mysql 时间段交集_问个MySQL时间段是否有交集的问题

小弟最近在做一个类似电影票定位的系统,有一个查询是查询客户选择的开始时间和时长(注意不是结束时间)

现在想查询两个时间段相交的记录,在CSDN查到了这篇文章https://blog.csdn.net/a312024054/article/details/76786739,用的第二种方式,伪SQL语句如下:

SELECT * FROM xxx WHERE NOT ((endTime < begin) OR (startTime > end));

数据库的字段 start_time, end_time

输入的字段 a,b

我的表字段

START_TIME——开始时间

DURATION——时长

跟他的情况略有不同:

1.我的START_TIME是varchar类型

2.我没有endTime,而是DURATION(int类型)

所以我是拿开始时间 + 时长得到结束时间的

于是我的SQL语句如下:

SELECT START_TIME,DURATION FROM BT_ORDER WHERE NOT

(

(date_add(str_to_date(START_TIME, '%H:%i'),interval DURATION minute) < str_to_date('18:00', '%H:%i'))

or

(str_to_date(START_TIME, '%H:%i') > date_add(str_to_date('18:00', '%H:%i'),interval 60 minute))

)

ORDER BY START_TIME ASC;

但是这样,查询出了三条记录:

START_TIME,DURATION

'17:00','60'

'18:00','60'

'19:00','105'

其中第一条和第三条不应该出现呀????

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值