2014-01-10 46 views
0

我基本上有一個MySQL表有以下欄目:創建間隔,並且返回是否有效

時間這是INT(11),將舉行一個指定的值(秒的量)

last_run其爲int(11)(將在一天執行的動作的量)

其爲int(11)和將持有另一指定值,並將於datetime值其中的SELECT查詢行上次使用

表的一個例子是,像這樣

time  |  package |  last_run 
-------------------------------------------------- 
86400 |  1000  | 0000-00-00 00:00:00 
86400 |  1000  | 0000-00-00 00:00:00 
86400 |  1000  | 0000-00-00 00:00:00 

我想基本上做一個SELECT查詢類似下面的

SELECT 
    * 
FROM 
    `table` 
WHERE 
    `divide time by package` AS total_seconds_between_each_run 
AND 
    `last_run` OLDER THAN (NOW()/total_seconds_each_run) 

這樣的想法我想do只抓取比total_seconds_between_each_run更早的行,因爲我只希望每隔指定的時間間隔執行一次動作

I under站在語法上沒有MySQL的查詢正確的,但是這是「榜樣」,而我想使用MySQL的

編輯做的,如果可能的

會像下面這樣的工作?

(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(last_run)) > (time/package) 

回答

1

你不想每運行秒來劃分NOW() - 你已經做了分工,當你計算出。你想要減去。

SELECT * 
FROM table 
WHERE last_run < DATE_SUB(NOW(), INTERVAL (time/package) SECOND) 

你在編輯中使用UNIX_TIMESTAMP的計算是等價的,所以它應該工作。

+0

謝謝,我是否也可以做到以下幾點? 'AND last_run Curtis

+0

當然可以。你可以將任何表達式與'AND'結合起來,爲什麼這是一個例外? – Barmar

+0

太好了,謝謝你的建議! – Curtis

相關問題