我有一个数据集,我希望能够按日期间隔进行切片。它是一堆被抓取的网络数据,每个项目都有一个unix风格的毫秒时间戳以及标准的UTC日期时间。
我希望能够查询数据集,挑选出最接近不同时间间隔的行: 例如:每小时,每天一次,每周一次等等。
无法保证时间戳在间隔时间内均匀分布,否则我只是对时间戳进行模拟查询。
有没有办法使用不涉及存储过程或某些预先计算的支持表的SQL命令来执行此操作?
我使用最新的MariaDB。
修改 明确的答案并没有完全回答我的具体问题,但它是对更广泛问题的一个体面的答案所以我继续并标记它。
我特意寻找一种方法来查询时间戳高度可变的数据集,并抓住合理接近周期时间间隔的行。例如:从现在起24小时间隔内获取最接近的所有行。
我最终使用模数查询来解决问题:timestamp%interval<数据点之间的平均间距。这偶尔会抓住额外的积分而错过一些积分,但对于我的图形应用来说已经足够了。
他们让我厌倦了node-mysql库一直崩溃所以我搬到了MongoDB。
答案 0 :(得分:0)
你说你想'最接近不同的时间间隔'但是然后说'每小时/每周/每周',所以实际的实施将取决于你真正想要的,但你可以使用一系列标准的日期/时间功能分组记录,例如按天计算:
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/