2009-09-25 27 views

risposta

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

Ciò seleziona tutte le righe che hanno una più recente rispetto dateField timestamp corrente meno un mese (così, ad esempio, dato oggi è 26 Settembre 2009 00:56 darebbe righe che sono più recenti di 26 Ago 2009 00:56)

5

in realtà, il mese scorso fino ad ora sarebbe:

dall'inizio del mese:

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

Dal momento che un mese fa: (si spera non avete futuro date sul tavolo)

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

In alternativa, si potrebbe desiderare solo il mese scorso ... dire oggi è settembre e si vuole tutto Agosto, ad esclusione di tutto di settembre ... Questo è ciò che intendo come "il mese scorso".

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

Si potrebbe anche fare per lo stesso risultato:

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