Ho una tabella con una delle colonne come data nel formato "AAAA-MM-GG". Posso usare select per ottenere tutti i dati in un intervallo mensile? Dico che voglio tutti i dati da 2012-01-xx a 2013-04-xx. Così sto fondamentalmente alla ricerca di una query SQL come quello indicato di seguito:Postgresql seleziona nell'intervallo mese
SELECT * FROM table WHERE date IN BETWEEN '2012-01' AND '2013-04' (INVALID QUERY)
Dal momento che ogni mese iniziano con '01' che posso modificare la query di cui sopra per regolare la condizione di avvio.
SELECT * FROM table WHERE date IN BETWEEN '2012-01-01' AND '2013-04' (INVALID QUERY)
Ora la questione viene fornito con l'enddate. Devo calcolare manualmente l'ultima data per il mese dato, prendendo in considerazione tutti i fattori come la lunghezza del mese, l'anno bisestile, ecc., Poiché la query non riesce se la data specificata non è valida. Così attualmente sto facendo qualcosa di simile:
SELECT * FROM table WHERE date IN BETWEEN '2012-01-01' AND 'VALID_MONTH_END_DATE' (VALID Query)
Voglio sapere se c'è qualche modo per evitare questo calcolo data di fine valida?
Chiarimento
ho pensato sopra il primo giorno del mese successivo, ma anche allora dovrò applicare una logica dicono, se dicembre, il mese successivo sarebbe gennaio del prossimo anno. Volevo sapere se è possibile una soluzione solo SQL?
sovrapposizioni funziona bene quando so che l'ultima data. Sono bloccato quando l'ultimo mese è dicembre. –
Da dove prendi i parametri? Un applicazione? La rete? Un'altra domanda? Li hai come stringhe o interi (anno, mese)? –
Occorre prestare attenzione quando si aggiunge un intervallo a una data. Il risultato è un 'timestamp'. Funziona nell'esempio sopra, però. Trasmetti il risultato a 'date', se è importante. L'aggiunta di un intervallo "n mese" risulta sempre nello stesso giorno del mese, indipendentemente dal numero effettivo di giorni nei mesi interessati o dal giorno massimo disponibile, quando il mese risultante ha meno giorni. Per aggiungere un numero esatto di giorni, aggiungi un 'intero 'a una' data', questo si traduce in un 'date'. –