sql >> Database >  >> RDS >> Oracle

Oracle - breek datums in kwarten

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

Regels voor parameters, mogelijk moet u de zoekopdracht aanpassen aan uw doeleinden:

  • Als start_date geen exacte kwartaalstart is, wordt in feite de startdatum van het kwartaal bevatten gebruikt.
  • Als einddatum niet exact het einde van het kwartaal is, eindigen we op het kwartaal dat eindigde VOOR einddatum (niet het kwartaal dat de einddatum bevat).


  1. Snelste manier om door een grote tabel te bladeren met JDBC

  2. Fout 404 niet gevonden met EM 12c

  3. Tabel maken met variabele naam php mysql

  4. SQL afgekapt/groep/volgorde op datums (dag/maand/kwartaal/jaar) met datums voor het overslaan van de som zonder gegevens