2013-11-23 397 views
0

我有一個數據集,我希望能夠按日期間隔切片。這是一堆刮掉的Web數據,每個項目都有一個unix樣式的微秒時間戳和一個標準的UTC日期時間。SQL,按日期間隔查詢

我希望能夠查詢的數據集,挑選出最接近於不同的時間間隔行: 如:每隔一小時,每天一次,每週一次等

有不能保證時間戳會在間隔時間內均勻下降,否則我只是在時間戳上做一個模式查詢。

有沒有辦法用,不涉及存儲的特效或某種預先計算的支持表的SQL命令來做到這一點?

我使用最新的MariaDB。

編輯: 被標記的答案並不完全回答我的具體問題,但它是一個體面的答案,更廣義的問題,所以我繼續將其標記。

我是專門尋找一種方式來查詢一組數據,其中時間戳是高度可變的,搶出來是相當接近的週期性時間間隔行。例如:獲取距離現在最近的24小時間隔的所有行。

我最終使用的模量查詢來解決該問題:時間戳%間隔的數據點之間<平均間距。這偶爾會抓取額外的點數並錯過一些,但對於我的圖形應用程序來說已經足夠好了。

而且他們也沒閒着節點,MySQL庫崩潰讓我感動到MongoDB的所有時間。

回答

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/