2009-09-25 60 views

回答

29
SELECT * FROM table WHERE dateField > DATE_SUB(NOW(), INTERVAL 1 MONTH) 

這將選擇具有比當前時間戳減去一個月(dateField最近一個所有行的話,例如,鑑於今天是2009年09月26日00:56,將給予那些比最近26 2009年8月更多的行00:56)

5

事實上,上個月到現在爲止應該是:

從月初:

SELECT * FROM table 
WHERE date >= DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m-01') 
AND date <= NOW() 

由於一個月前:(希望你在表上沒有未來的日期)

SELECT * FROM table 
WHERE date >= (CURRENT_DATE - INTERVAL 1 MONTH) 

或者,您可能希望只有最後一個月......今天要說的是九月,你希望所有月,不包括任何九月......這就是我所理解的'上個月'。

SELECT * FROM table 
WHERE date >= DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y/%m/01') 
AND date < DATE_FORMAT(CURRENT_DATE, '%Y/%m/01') 

你也可以在同樣的結果做:

SELECT * FROM table 
WHERE YEAR(date) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) 
AND MONTH(date) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)