2012-02-19 57 views
0

我試圖創建一個cron作業,涉及聚合一段時間內發送的電子郵件。MySQL選擇行日期和時間> NOW

我需要執行這樣的查詢作爲

SELECT count(*) from table where action_time < NOW(); 

我怎麼會去嗎?

我所知道的CURDATE()CURTIME()但我需要的時間和日期,以便在事件發生後的確切分鐘時執行的動作來比較,CURTIME將意味着在午夜我會得到一個問題。

編輯:CURTIME()僅包括時間,以便於操作時間23:59:59不會在00:00:59運行分貝的工作 - 一分鐘後(因爲後者不大於第一)

我可以使用日期時間或時間戳,但我會用一個函數來比較(我用NOW()以上,但不工作)

更新:我試着用 SELECT COUNT(*) from table where UNIX_TIMESTAMP(action_time)< UNIX_TIMESTAMP(NOW()); 它的工作原理:)

+0

什麼數據類型是'action_time',它應該是'DATETIME'。 – Vyktor 2012-02-19 19:19:23

+0

這是日期時間雖然我想使用TIMESTAMP,使其更可比,因爲Mchl建議 – Akshat 2012-02-19 19:22:39

回答

0

我試圖

SELECT count(*) from table where UNIX_TIMESTAMP(action_time) < UNIX_TIMESTAMP(NOW()); 
0

CURTIME()NOW()實際上返回當前時間到第二。 NOW()也返回日期部分。不知道你的問題是什麼。

+0

問題是CURTIME()不包括日期,我不知道,所以如果我有一個cron運行每分鐘一個工作,旨在11 :59:59不會在00:00:59運行,因爲後者不會比第一個更大 – Akshat 2012-02-19 19:09:03

+0

對不起,我的意思是,在下一個時間段運行cron時,action_time爲11:59:59的任務不會運行 – Akshat 2012-02-19 19:10:06

+0

我現在看到了(我認爲)。你應該做的是在數據庫中存儲最後執行的cron作業(同時使用日期和時間),並且讓你的查詢與當時的數據比較NOW() – Mchl 2012-02-19 19:13:00

0

使用mysql中的時間戳,並與* nix環境中的時間進行比較。