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

Oracle SQL untuk Hari Kerja Terakhir Bulan Ini termasuk hari libur federal di oracle

Simpan hari libur federal tersebut di tabel hari libur sebagai DATE ketik dan coba sesuatu seperti ini:Temukan yang tertua ( MAX ) hari dalam tujuh hari terakhir bulan yang bukan hari Sabtu atau Minggu atau hari libur yang disebutkan dalam tabel hari libur.

Asumsinya disini adalah 1) tidak semua tujuh hari di akhir bulan semua bisa hari libur atau weekend dan 2) Sabtu dan Minggu libur. Anda dapat menyesuaikan level atau di mana klausa yang sesuai, tergantung pada apakah asumsi di atas harus selalu benar atau tidak.

SELECT MAX(dt) AS last_working_day 
FROM
(
SELECT last_day(SYSDATE) - level + 1 as dt
FROM dual CONNECT BY
     level <= 7  -- the last seven days of the month
     )  WHERE TO_CHAR(dt,'DY', 'NLS_DATE_LANGUAGE = AMERICAN') NOT IN ('SAT','SUN')
     AND dt NOT IN ( SELECT holiday from federal_holidays );

Pendekatan yang jauh lebih baik adalah memiliki tabel Kalender dengan semua tanggal dalam setahun dan kolom yang telah ditentukan sebelumnya yang disebut isbusinessday . Maka kueri akan jauh lebih sederhana.

SELECT MAX(dt)
  FROM calendar
  WHERE isbusinessday = 'Y' 
AND TO_CHAR(dt,'YYYYMM') = TO_CHAR(SYSDATE,'YYYYMM');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memilih objek Oracle dengan koleksi objek tanpa pengumpulan massal

  2. Oracle mengunci dengan SELECT...UNTUK UPDATE OF

  3. Impor file CSV ke dalam Tabel Eksternal Oracle

  4. dapatkan kolom huruf kecil dari ResultSet menggunakan nama kolom

  5. Berikan Pilihan pada semua Tabel yang Dimiliki Oleh Pengguna Tertentu