Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle - podział dat na ćwiartki

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

Reguły dotyczące parametrów, może być konieczne dostosowanie zapytania do własnych celów:

  • Jeśli data_początkowa nie jest dokładną datą rozpoczęcia kwartału, efektywnie wykorzystuje datę rozpoczęcia zawierającą kwartał.
  • Jeśli data_końcowa nie jest dokładnym końcem kwartału, kończymy w kwartale, który zakończył się PRZED datą_końcową (nie w tym zawierającym datę zakończenia).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Operacja zmiany nazwy pliku utl nie powiodła się

  2. interwał formatu z to_char

  3. Problem z połączeniem qt + Oracle

  4. nie jest to funkcja pojedynczej grupy z MAX w select

  5. Co to jest dokładnie BLOB w kontekście DBMS