【问题标题】:MySQL select from a period of timeMySQL 从一段时间中选择
【发布时间】:2018-06-15 11:16:57
【问题描述】:

我想构建一个每天下午 1 点更新的查询,它显示从下一天下午 3 点到上午 11 点的静态数据。

如果现在是 2018-06-16 12pm,则显示从 2018-06-15 3pm - 2018-06-16 11am

如果现在是 2018-06-16 1pm,则显示从 2018-06-16 3pm - 2018-06-17 11am

的数据

这是我尝试过的查询。

更新:

SELECT * FROM config WHERE gt BETWEEN CONCAT(curdate(),' 15:00:00') AND CONCAT(curdate()+ INTERVAL 1 DAY,' 10:59:59')

问题:

当今天是 2018-06-15 时,curdate() -> 2018-06-15,显示今天没有问题的数据。

今天是 2018-06-16 时,curdate() -> 2018-06-16,显示第二天的数据太早了,我想要的是每天下午 1 点更新。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 更多信息已更新。
  • 因为下午 3 点到上午 11 点是一个连续的时间序列,您应该可以只使用 BETWEEN - 参见 stackoverflow.com/questions/3822648/… 示例

标签: mysql sql date


【解决方案1】:

两种情况:

  1. 在 0:00 到 12:59 之间:你想要昨天 15:00 到今天 11:00
  2. 在 13:00 到 23:59 之间:你想要今天 15:00 到明天 11:00

查询:

select * 
from config 
where
(
  hour(current_time) between 0 and 12 
  and gt >= current_date - interval 9 hours -- yesterday 15:00
  and gt < current_date + interval 11 hours -- today 11:00
)
or
(
  hour(current_time) between 13 and 23
  and gt >= current_date + interval 15 hours -- today 15:00
  and gt < current_date + interval 35 hours -- tomorrow 11:00
);

【讨论】:

    【解决方案2】:

    您可以通过多种方式应用选择命令。这里我只提到了两种方法。这对你很有用。

    SELECT * FROM config 
    WHERE gt BETWEEN #07/04/1996# AND #07/09/1996#;
    
    
    select * from config  where gt  and created_at > (now()- interval 10 day)
    

    【讨论】:

      【解决方案3】:

      您可以使用此示例来构建您的查询:

      SELECT * 
      FROM table_name
      WHERE `date` >= NOW() - INTERVAL 10 DAY;
      

      Here 一些关于如何使用INTERVAL 的信息。

      here 是一些关于如何在特定时间执行查询的有用信息。

      编辑:

      如果 now() = 2018-06-16 1pm,则显示 2018-06-16 3pm - 2018-06-17 的数据 上午 11 点

      那么你可以使用这个例子:

      SELECT * 
      FROM config 
      WHERE DATE(gt) BETWEEN DATE(NOW() + INTERVAL 2 DAY_HOUR) AND -- 2018-06-16 3pm
                             DATE(NOW() + INTERVAL 22 DAY_HOUR);   -- 2018-06-17 11am
      

      演示here

      注意:第一个DATE 应该早于BETWEEN 语句中的第二个DATE。否则将无法正常工作。

      【讨论】:

      • 但它返回零结果
      • 工作中,请检查,示例已添加
      猜你喜欢
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2011-11-16
      • 2013-03-28
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      相关资源
      最近更新 更多