Oracle PL / SQL datetime matematica - intervalli
-
13-10-2019 - |
Domanda
Sto usando la sintassi come {?EndDate} - INTERVAL '1' YEAR
per un po ', e sapevo che c'era un problema che stavo andando a colpire alla fine, e ho appena colpito. Ho cercato di fare DATE '2010-12-31' - INTERVAL '6' MONTH
, ed è soffocato perché non c'è 31 giugno. Qual è il modo più efficace e coerente per il codice questo? Mentre rintracciare la persona che ha preso la decisione di farlo in questo modo sarebbe più soddisfacente, è impraticabile. : -)
Soluzione
Non sono sicuro se c'è un coerenti di modo, in quanto dipende certamente su quello che qualcuno pensa è di 6 mesi. Eppure, imho, è lecito ritenere che add_months
è un modo standard (almeno in Oracle) per sottrarre o aggiungere mesi:
select add_months(DATE '2010-12-31',-6) from dual;
Questo restituisce espressione 30 giugno 2010 (che è l'ultimo giorno di quel mese (come è il 31 di dicembre).