mysql非工作时间记录

kg7wmglp  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(362)

我的系统需要根据营业时间或非营业时间对客户作出响应;
上午8:01至晚上8:00(营业时间)
晚上8:01至上午8:00(非营业时间)
我创建了下表;

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查询的最佳方法是什么?

3qpi33ja

3qpi33ja1#

使用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

相关问题