mySQL下班时间记录

时间:2018-10-23 20:15:13

标签: mysql

我的系统需要根据营业时间或营业时间对客户做出响应;

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

1 个答案:

答案 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