我有一个表'appoints',其中包含两个datetime字段,分别标记为'start'和'end'。我还有以本地时间表示的日期,它被转换为一个全天范围的utc(这是sql表存储日期时间的格式)。我需要选择00:00:00和08:00:00 utc之间的所有(业务)时间,这些时间也属于我的本地时间转换范围。
例如,pst(太平洋标准时间)中的用户选择2018年12月1日。12月1日00:00:00和12月2日00:00:00之间的日期转换为utc,即12月1日08:00:00到12月2日08:00:00。我需要选择前一个范围(12月1日至12月2日)内任何给定日期的00:00:00至8:00:00之间的所有约会。
我的所有日期时间/查询的格式都是“yyyy-mm-dd hh:mm:ss”。
我知道我可以在两次之间选择所有的时间,就像这样:
SELECT start, end
FROM appointment
WHERE start>='2018-12-01 00:00:00'
AND end<='2018-12-02 08:00:00'
但我不确定如何把这些削减到只有工作时间之间。
我在找这样的东西
SELECT start, end
FROM appointment
WHERE (start>='2018-12-01 00:00:00'
AND end<='2018-12-02 08:00:00')
AND (start.substring(11, start.end) >= '00:00:00'
AND end.substring(11, end.end) <= '08:00:00')
其中,像start.substring(11,start.end)这样的调用将以'hh:mm:ss'格式返回时间
1条答案
按热度按时间zzlelutf1#
尝试使用
TIME
mysql中的函数。SELECT start, end FROM appointment WHERE TIME(start) >= '00:00:00' AND TIME(end) <= '08:00:00' AND ... //other conditions