2011-08-07 47 views
4

我想用mysql做一點垃圾郵件過濾器。我想檢查用戶在表格中創建的最後一條記錄,並將其與當前時間進行比較。創建的時間使用mysql datetime格式存儲爲date_createdmysql的時差

我試過TIMEDIFF(),但我無法讓它爲我工作,請幫助。

回答

3
SELECT count(*) FROM database WHERE date_created> NOW() - INTERVAL 1 HOUR AND user_id=17 

如果該查詢返回非零值,則該用戶都行,在最後一小時內創建

+0

我不能使用紀元時間insted? NOW()給我當地時間.. – halliewuud

+0

是關於UNIX_TIMESTAMP的嗎?如果date_created是datetime – RiaD

+1

@halliewuud晚了一點,但是你可以使用'UTC_TIMESTAMP()'獲取UTC中的當前日期時間,這很奇怪。 – Nate

1

爲了獲得最新的記錄和時間差異,以當前時間爲用戶x

SELECT 
    tab.*, 
    TIMEDIFF(NOW(), date_created) as diff 
FROM tab 
WHERE(userid = x) 
ORDER BY date_created DESC 
LIMIT 1 
+0

是'tab。*,'真的正確嗎? – halliewuud

+0

使用表格的名稱替換'tab',與'FROM'後面的一樣。或者僅僅使用'*,'也應該起作用。 – ain