【问题标题】:How select dates from the last 7 days with 5mins interval in mysql如何在mysql中以5分钟间隔选择最近7天的日期
【发布时间】:2020-02-28 08:28:17
【问题描述】:

我有这样的日期和值的表格:

+----------------------+-------+
|         time         | value |
+----------------------+-------+
| 2020-02-28 08:30:20  |    30 |
| 2020-02-28 08:30:25  |    15 |
| 2020-02-28 08:30:30  |    30 |
| 2020-02-28 08:30:35  |    10 |
+----------------------+-------+

我需要过去 7 天的日期,每 5 分钟一次,不带秒。

+-------------------+-------+
|       time        | value |
+-------------------+-------+
| 2020-02-28 08:30  | 30    |
| 2020-02-28 08:35  | 5     |
| 2020-02-28 08:40  | 30    |
| 2020-02-28 08:45  | 4     |
+-------------------+-------+

是否可以创建这样的查询?

【问题讨论】:

  • 考虑处理应用代码中数据显示的问题
  • 我需要日期,即使值为空或日期不存在。 服务器无法返回其中不存在的数据。您必须生成所需的日期时间列表并将源数据加入其中。并且您必须制定一些标准,这些标准将定义必须返回与一个最终日期时间匹配的大量值的值(例如您的示例数据中的 4 条记录,它们都与一个最终记录匹配)。

标签: mysql sql date intervals


【解决方案1】:

你可以这样使用:

SELECT DATE_FORMAT($column, '%H:%i'),`value` FROM $table WHERE MOD(MINUTE($Whenـyouـwantـitـtoـstart),5) = 0  AND `time` >= DATE(NOW()) - INTERVAL 7 DAY

例如:

SELECT DATE_FORMAT(`time`, '%H:%i'),`value` FROM users WHERE  MOD(MINUTE((NOW()),5) = 0 
AND `time` >= DATE(NOW()) - INTERVAL 7 DAY

如果你想有时间没有秒,你应该使用:

DATE_FORMAT(`time`, '%H:%i')

查询选择过去 7 天内的行

WHERE `time` >= DATE(NOW()) - INTERVAL 7 DAY

和 MOD(N,M) 函数返回一个数字除以另一个数字的余数。你可以这样使用它:

WHERE MOD(MINUTE("2020-02-28 08:45:00"),5)=0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多