mysql选择范围内的datetime对象

kse8i1jr  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(250)

我有一个表'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'格式返回时间

iqxoj9l9

iqxoj9l91#

尝试使用 TIME mysql中的函数。 SELECT start, end FROM appointment WHERE TIME(start) >= '00:00:00' AND TIME(end) <= '08:00:00' AND ... //other conditions

相关问题