Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle - разделяне на датите на четвъртинки

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

Правила за параметри, може да се наложи да коригирате заявката, за да отговаря на вашите цели:

  • Ако start_date не е точното начало на тримесечието, то ефективно използва началната дата на тримесечието.
  • Ако end_date не е точният край на тримесечието, тогава приключваме на тримесечието, което е приключило ПРЕДИ end_date (не това, което съдържа крайна дата).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разберете какво е добър индекс?

  2. Изпълнение на процедура в тригер

  3. Oracle заявки, изпълнени от сесия

  4. оратоп

  5. Извличане на XML подтагове от clob в Oracle чрез SQL