sql >> Database teknologi >  >> RDS >> Oracle

Oracle - opdel datoer i kvartaler

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 for parametre, du skal muligvis justere forespørgslen, så den passer til dine formål:

  • Hvis start_date ikke er den nøjagtige kvartalsstart, bruger den faktisk kvartalets startdato.
  • Hvis slutdato ikke er nøjagtigt kvartalsslut, slutter vi på kvartalet, der sluttede FØR slutdato (ikke den, der indeholder slutdatoen).


  1. Kan jeg i MySQL returnere slettede rækker efter en sletning?

  2. C# .NET + PostgreSQL

  3. Hvorfor virker denne forespørgsel ikke i SQLite, men fungerer fint i MySQL og MSAccess?

  4. Hvordan kan jeg udskrive den SQL-forespørgsel, der udføres efter Perls DBI udfylder pladsholderne?