【问题标题】:mysql select on datetime objects within rangemysql选择范围内的日期时间对象
【发布时间】: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' 格式返回时间

【问题讨论】:

    标签: mysql date datetime


    【解决方案1】:

    尝试在 MySQL 中使用TIME 函数。

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

    【讨论】:

      猜你喜欢
      • 2012-04-12
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多