sql >> Databasteknik >  >> RDS >> Oracle

Oracle - bryt datum i kvartal

SELECT  ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL-1) )   AS qstart
    ,   ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL) ) -1  AS qend
FROM    (   SELECT  TO_DATE('&start_date')  AS start_date
                ,   TO_DATE('&end_date')    AS end_date
            FROM    DUAL
        ) PARAM
CONNECT BY ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL) ) -1
        <= PARAM.end_date

Regler för parametrar, du kan behöva justera frågan så att den passar dina syften:

  • Om start_date inte är exakt kvartalsstart använder det i praktiken kvartalets startdatum.
  • Om slutdatum inte är exakt kvartalsslut slutar vi på kvartalet som slutade FÖRE slutdatum (inte det som innehåller slutdatum).


  1. FEL:dubblettnyckelvärde bryter mot unik begränsning i postgreSQL

  2. postgresql tidsstämpel till std::chrono värde

  3. Mamp localhost löser sig mycket långsamt

  4. Hanterar tidszoner i PHP och MySQL