MYSQL判断时间有没有交集
遇到一个新的需求,再为商户做的支付宝小程序中有一个每日签到领取积分和优惠券的功能,要求是一段时间内只能有一个签到活动,所以在商户吼他新增签到活动的时候,需要对签到活动的时间做限制,所有的签到活动的开始时间结束时间不能有交集。
那么时间集合的逻辑如下所示:
总结起来就是:最小值小于最大值,并且最大值大于最小值,那么一定重叠
数据库中活动的开始时间,结束时间是start_time,end_time
SQL语句
SELECT * FROM test_table
WHERE
(start_time >= a AND start_time <= b)
OR (start_time <= a AND end_time >= b)
OR (end_time >= a AND end_time <= b)