2010-06-25 12 views
19

Come ottenere gli ultimi record di 3 mesi dalla tabella.ottenere gli ultimi record di tre mesi dalla tabella

SELECT * FROM tabella WHERE mese> CURRENT_DATE-120 e il mese < ordine CURRENT_DATE per mese;

Ho utilizzato la query sopra è corretta? Devo usare questo per ottenere l'ultimo record di 3 mesi dal tavolo.

+0

selezionare c.id credito, p.nombres, p.apellidos da creditos c, personas p dove c.solicitante = p.id ec. aprobado = true e c.fechaini tra CURRENT_DATE - INTERVAL '3 months' e CURRENT_DATE group di p.nombres, p.apellidos, c.id; –

risposta

62

È possibile utilizzare built-in INTERVAL istruzioni

controllare come funziona:

SELECT CURRENT_DATE - INTERVAL '3 months' 

e si può riscrivere il vostro SQL:

SELECT * from table where date > CURRENT_DATE - INTERVAL '3 months' 

(non controllato ma questo dovrebbe darti un'idea di come usare le istruzioni INTERVAL)

+1

Dovrebbe essere notato che questo approccio avrebbe recuperato i record che hanno un campo 'data' che è tra la data corrente e "3 mesi" fa (che sarebbe essenzialmente lo stesso di dire 28, 30 o 31 giorni fa, a seconda del mese). Se desideri record con una data compresa negli ultimi 3 mesi di calendario, devi fare qualcosa di diverso. – jstol

+0

@jstol cosa esattamente? – Rocketq

1

Prova che:

SELECT * 
FROM table 
WHERE month BETWEEN EXTRACT(MONTH FROM NOW() - INTERVAL '3 months') 
AND EXTRACT(MONTH FROM NOW()) 
ORDER BY month 
; 
+1

E come pensi che funzionerà a gennaio? (Non lo farà) –

+0

Non lo saprò, ma la domanda lo implica come sappiamo solo l'esistenza della colonna del mese e non sappiamo se esiste un anno nella sua relazione – analogue

Problemi correlati