爲了對web服務器上的傳入數據做一些統計,我對這些數據做了一些ETL工作。所以我總結了一些基於四分之一小時的事情。即:計算時間(到下一個時間段的整數時間)
inserted | tstamp
8:00 8:00
8:09 8:00
8:16 8:15
8:29 8:15
8:42 8:30
8:45 8:45
8:59 8:45
9:01 9:00
以上的列是datetime
列,其中還包含一個日期(我離開它僅用於演示目的)。該作業每3分鐘通過cron運行一次,並且只接收最近3分鐘的數據。現在,當cron作業在工作時崩潰時,存在風險,即當下一次作業重新啓動時,時隙包含錯誤的數據。所以我希望這份工作能夠在最後一個時間段開始。即當作業在上次08:24運行並崩潰時,應該在08:15再次啓動。
我的問題是現在,是否有一個簡單的MySQL語句,它給了我實際時間之前的最後一個時間段?
我使用ETL來確定實際的時隙中的語句是
CONCAT(
DATE_FORMAT(a.inserted, '%Y-%m-%d %H:'),
IF(MINUTE(a.inserted)<15,'00',
IF(MINUTE(a.inserted)<30,'15',
IF(MINUTE(a.inserted)<45,'30',
'45'))
),
':00'
) AS tstamp
難道這更優雅的方式做?
您的查詢隱含你的'real_time'列不是日期。是嗎? – Ben
對不起,這只是時間片的一個例子。當然,這是一個包含日期的'datetime'列。 – rabudde