【问题标题】:SQL, querying by date intervalsSQL,按日期间隔查询
【发布时间】:2013-11-23 04:08:59
【问题描述】:

我有一个数据集,我希望能够按日期间隔进行切片。这是一堆抓取的网络数据,每个项目都有一个 unix 样式的毫秒时间戳以及标准的 UTC 日期时间。

我希望能够查询数据集,找出最接近不同时间间隔的行: 例如:每小时、每天一次、每周一次等。

不能保证时间戳会均匀地落在间隔时间上,否则我只会对时间戳做一个 mod 查询。

有没有办法使用不涉及存储过程或某种预先计算的支持表的 SQL 命令来执行此操作?

我使用最新的 MariaDB。

编辑: 标记的答案并不能完全回答我的具体问题,但它是对更普遍的问题的一个不错的答案,所以我继续标记它。

我一直在寻找一种方法来查询时间戳变化很大的一组数据,并找出合理接近周期性时间间隔的行。例如:从现在开始以 24 小时为间隔获取所有最接近的行。

我最终使用模数查询来解决问题:时间戳百分比间隔

我厌倦了 node-mysql 库一直崩溃,所以我搬到了 MongoDB。

【问题讨论】:

    标签: mysql sql intervals unix-timestamp mariadb


    【解决方案1】:

    您说您想要“最接近各种时间间隔”,然后说“每小时/每天/每周”,因此实际实现将取决于您真正想要的,但您可以使用许多标准日期/时间函数对记录进行分组,例如按天计数:

    SELECT DATE(your_DateTime) AS Dt, COUNT(something) AS CT
    FROM yourTable
    GROUP BY DATE(your_DateTime)
    

    按小时计数:

    SELECT DATE(your_DateTime) AS Dt,HOUR(your_DateTime) AS Hr, COUNT(something) AS CT
    FROM yourTable
    GROUP BY DATE(your_DateTime), HOUR(your_DateTime)
    

    在此处查看支持的日期和时间函数的完整列表: https://mariadb.com/kb/en/date-and-time-functions/

    【讨论】:

      猜你喜欢
      • 2011-09-02
      • 2013-10-24
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      相关资源
      最近更新 更多