【问题标题】:Get n data based on the same day (timestamp)根据同一天(时间戳)获取n条数据
【发布时间】:2015-09-03 01:48:21
【问题描述】:

我有这个表“传感器”,它有这些字段:

  • id (int,PK)
  • 时间戳(时间戳)
  • 纬度(varchar)
  • 经度(varchar)
  • 数据(浮点数)

在一个查询中,我想获取同一天的 5 行。请注意,这不是当前日期,并且数据有很多不同的日期。所以,如果他们在同一天,我想得到他们.. 我尝试使用 INTERVAL 但它不起作用。谢谢

【问题讨论】:

  • 到目前为止你尝试过什么查询???
  • SELECT * FROM sensor WHERE timestamp >= INTERVAL 1 DAY ORDER BY id DESC LIMIT 5
  • 我刚刚发布了我的答案。至于您的查询,它应该是:SELECT * FROM sensor WHERE timestamp >= DATE(NOW() - INTERVAL 1 DAY) ORDER BY id DESC LIMIT 5;
  • INTERVAL 是对DATETIMETIMESTAMP 值进行加减运算的运算符
  • 看到我的示例后,您可以随意使用LIMIT

标签: mysql timestamp date


【解决方案1】:

假设您想查看上周传感器数据点的数量

SELECT
    DATE(timestamp) dt,
    COUNT(1) datapoints
FROM sensor
WHERE
    timestamp >= DATE(NOW()) - INTERVAL 1 WEEK + INTERVAL 0 SECOND
GROUP BY DATE(timestamp);

查看这个月的每一天

SELECT
    DATE(timestamp) dt,
    COUNT(1) datapoints
FROM sensor
WHERE
    timestamp >= DATE(NOW()) - INTERVAL (DAY(NOW())-1) WEEK + INTERVAL 0 SECOND
GROUP BY DATE(timestamp);

逐年看这一年

SELECT
    DATE(timestamp) dt,
    COUNT(1) datapoints
FROM sensor
WHERE
    timestamp >= MAKEDATE(YEAR(NOW()),1)
GROUP BY DATE(timestamp);

逐月查看今年

SELECT
    DATE(timestamp - INTERVAL (DAY(timestamp)-1) DAY) dt,
    COUNT(1) datapoints
FROM sensor
WHERE
    timestamp >= MAKEDATE(YEAR(NOW()),1)
GROUP BY DATE(timestamp - INTERVAL (DAY(timestamp)-1) DAY);

【讨论】:

  • DATE(NOW()) 可以替换为CURDATE()+ INTERVAL 0 SECOND 可能没什么用,可以删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 2020-03-07
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多