2010-05-04 152 views
13

我想寫一個查詢來從users表中選擇所有記錄,其中User_DateCreated(datetime字段)距離今天大於3個月。mysql選擇記錄大於3個月

任何想法?

回答

51
SELECT * 
FROM users 
WHERE user_datecreated >= NOW() - INTERVAL 3 MONTH 
10

如果您想忽略創建用戶的時間,可以使用以下內容。因此,如果您在下午2:00運行Quassnoi的示例查詢,那麼這將顯示在上午8:00創建的人員。

SELECT * 
FROM users 
WHERE DATE(user_datecreated) >= DATE(NOW() - INTERVAL 3 MONTH) 
2

使用DATE(user_datecreated)會阻止mysql使用該列上的任何索引,從而在表增長時查詢真的很慢。

如果您從「3個月前」日期中刪除時間,則不必忽略創建用戶的時間,因爲當天創建的所有用戶都將與條件匹配。

SELECT * 
FROM users 
WHERE user_datecreated >= DATE(NOW() - INTERVAL 3 MONTH);