Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle - pisahkan tanggal menjadi empat bagian

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

Aturan untuk params, Anda mungkin perlu menyesuaikan kueri agar sesuai dengan tujuan Anda:

  • Jika tanggal_mulai bukan awal kuartal yang tepat, maka secara efektif menggunakan kuartal yang berisi tanggal mulai.
  • Jika tanggal_akhir bukan akhir kuartal yang tepat, maka kita berakhir pada kuartal yang berakhir SEBELUM tanggal_akhir (bukan yang berisi tanggal akhir).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sqlplus cara menemukan detail sesi database yang saat ini terhubung

  2. Bagaimana cara mengembalikan bolen di refcursor?

  3. Kueri berguna AWR teratas untuk Peningkatan R12.2/R12.1

  4. mendapatkan kesalahan saat memasukkan beberapa baris di sql

  5. Tidak dapat memuat data dari file ke tabel Oracle menggunakan executeMany()