mysql选择范围内的日期时间对象
Posted
技术标签:
【中文标题】mysql选择范围内的日期时间对象【英文标题】:mysql select on datetime objects within range 【发布时间】:2019-04-28 18:44:05 【问题描述】:我有一个表“约会”,其中包含两个标记为“开始”和“结束”的日期时间字段。我也有本地时间的日期,它作为一整天的范围转换为 UTC(这是 SQL 表将日期时间存储为的)。我需要选择 00:00:00 到 08:00:00 UTC 之间的所有(业务)时间,这些时间也属于我的本地时间转换范围。
例如,PST(太平洋标准时间)的用户选择 2018 年 12 月 1 日。12 月 1 日 00:00:00 和 12 月 2 日 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】:尝试在 mysql 中使用TIME
函数。
SELECT start, end
FROM appointment
WHERE TIME(start) >= '00:00:00'
AND TIME(end) <= '08:00:00' AND ... //other conditions
【讨论】:
以上是关于mysql选择范围内的日期时间对象的主要内容,如果未能解决你的问题,请参考以下文章