我有一个表“ appointments”,其中包含两个标有“ start”和“ end”的日期时间字段。我还具有本地时间的日期,该日期会作为一整天的范围转换为UTC(这是SQL表将日期时间存储为的时间)。我需要选择UTC时间00:00:00到08:00:00之间的所有(业务)时间,这些时间也都属于我的本地时间转换范围。
例如,一个用户使用PST(太平洋标准时间)选择2018年12月1日。12月1日00:00:00到12月2nd 00:00:00之间的日期将转换为UTC,即08年12月1日。 :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'格式返回时间
答案 0 :(得分:1)
尝试在MySQL中使用TIME
函数。
SELECT start, end
FROM appointment
WHERE TIME(start) >= '00:00:00'
AND TIME(end) <= '08:00:00' AND ... //other conditions