MySQL选择范围内的日期时间对象

时间:2018-11-27 04:16:55

标签: mysql date datetime

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

1 个答案:

答案 0 :(得分:1)

尝试在MySQL中使用TIME函数。

SELECT start, end FROM appointment WHERE TIME(start) >= '00:00:00' AND TIME(end) <= '08:00:00' AND ... //other conditions