我的系统需要根据营业时间或营业时间对客户做出响应;
我创建了下表;
CREATE TABLE responses (
response_id int(11) unsigned NOT NULL AUTO_INCREMENT,
start_at time DEFAULT NULL,
end_at time DEFAULT NULL,
PRIMARY KEY (response_id)
);
营业时间查询工作正常;
SELECT * FROM responses WHERE CURTIME() BETWEEN start_at AND end_at;
下班时间:通知开始时间为晚上8:01,而结束时间为上午8:00。在这种情况下,开始时间小于结束时间,但同时发生,它也会改变日期。
在这种情况下,编写mySQL SELECT查询的最佳方法是什么?
答案 0 :(得分:1)
使用NOW()和dateTime字段代替CURTIME()和Time字段。
现在您正在比较类似这样的东西:
WHERE '22:00:00' BETWEEN '20:00:01' AND '8:00:01'; // returns FALSE
但是当您跨天使用dateTime时,它会执行以下操作:
WHERE '2018-10-23 22:00:00' BETWEEN '2018-10-23 20:00:01' AND '2018-10-24 8:00:01' // returns TRUE