Mengidentifikasi Hari Kerja dengan Fungsi TO_CHAR() Oracle
Contoh berikut menunjukkan cara menggunakan TO_CHAR() untuk mengembalikan hanya baris yang tanggalnya jatuh pada hari kerja.
SELECT order_id, order_date
FROM orders
WHERE TO_CHAR(order_date, 'DY') NOT IN ('SAT', 'SUN');
Output yang Diharapkan:
ORDER_ID | ORDER_DATE
---------|------------
1001 | 04-SEP-2023
1002 | 05-SEP-2023
1005 | 06-SEP-2023
1010 | 07-SEP-2023
Dalam query ini:
-
TO_CHAR(order_date, 'DY')mengambil singkatan nama hari dari kolom order_date. - Klausa
NOT IN ('SAT', 'SUN')menyaring baris yang harinya Sabtu atau Minggu.
Menggunakan Nama Hari Lengkap
Jika database Anda diatur ke locale dengan singkatan nama hari yang berbeda, atau Anda lebih suka memakai nama hari lengkap, Anda dapat mengubah query seperti berikut:
SELECT employee_id, work_date
FROM employee_schedule
WHERE TO_CHAR(work_date, 'DAY') NOT IN ('SATURDAY', 'SUNDAY');
Output yang Diharapkan:
EMPLOYEE_ID | WORK_DATE
------------|-----------
200 | 01-SEP-2023
201 | 02-SEP-2023
202 | 03-SEP-2023
Memfilter Hari Kerja di Antara Dua Tanggal
Sering kali Anda ingin mengambil data di antara dua tanggal, tetapi hanya untuk hari kerja. Berikut cara memperluas logikanya untuk itu.
Contoh Query: Memilih Hari Kerja di Antara Dua Tanggal
SELECT invoice_id, invoice_date
FROM invoices
WHERE invoice_date BETWEEN TO_DATE('2023-09-01', 'YYYY-MM-DD')
AND TO_DATE('2023-09-10', 'YYYY-MM-DD')
AND TO_CHAR(invoice_date, 'DY') NOT IN ('SAT', 'SUN');
Output yang Diharapkan:
INVOICE_ID | INVOICE_DATE
-----------|--------------
3001 | 01-SEP-2023
3005 | 04-SEP-2023
3007 | 05-SEP-2023
3010 | 06-SEP-2023
Menangani Bahasa dan Locale yang Berbeda
Oracle dapat menampilkan nama hari berdasarkan pengaturan NLS (National Language Support) pada sesi Anda. Misalnya, jika sesi Anda diatur ke bahasa selain Inggris, singkatan hari seperti ‘MON’, ‘TUE’ bisa berbeda. Anda dapat memeriksa pengaturan saat ini dengan menjalankan:
SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_TERRITORY';
Jika perlu, Anda dapat menimpa pengaturan ini di tingkat sesi untuk memastikan hasil yang konsisten:
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
Ini mengatur territory ke ‘AMERICA’, sehingga nama hari seperti ‘MON’, ‘TUE’, dan seterusnya yang digunakan.
Menggunakan Fungsi NEXT_DAY()
Terkadang Anda ingin menghitung hari kerja berikutnya dari tanggal tertentu. Fungsi NEXT_DAY() Oracle membantu Anda menemukan kemunculan berikutnya dari hari tertentu dalam seminggu.
Contoh Query: Mencari Hari Kerja Berikutnya
SELECT NEXT_DAY(SYSDATE, 'MONDAY') AS next_monday
FROM dual;
Output yang Diharapkan:
NEXT_MONDAY
------------
11-SEP-2023
Dalam kasus ini, NEXT_DAY(SYSDATE, 'MONDAY') mengembalikan ‘Monday’ (Senin) berikutnya setelah tanggal saat ini.
Kesimpulan
Memfilter hari kerja di Oracle SQL adalah kebutuhan umum di banyak aplikasi. Dengan memakai fungsi TO_CHAR() untuk mengambil hari dalam seminggu dan menyaring akhir pekan, Anda dapat bekerja dengan hari kerja saja. Untuk skenario yang lebih kompleks, fungsi seperti NEXT_DAY() dan rentang tanggal dapat digabungkan untuk membuat query yang lebih canggih.
Artikel lain yang mungkin Anda sukai:
Beekeeper Studio Adalah GUI Database Gratis & Open Source
Tool query & editor SQL terbaik yang pernah saya pakai. Semua yang saya butuhkan untuk mengelola database ada di sini. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio cepat, intuitif, dan mudah digunakan. Beekeeper mendukung banyak sekali database, dan berjalan mulus di Windows, Mac, dan Linux.
Apa Kata Pengguna tentang Beekeeper Studio
"Beekeeper Studio benar-benar menggantikan alur kerja SQL lama saya. Cepat, intuitif, dan membuat pekerjaan database kembali menyenangkan."
"Saya sudah mencoba banyak GUI database, tetapi Beekeeper punya keseimbangan sempurna antara fitur dan kesederhanaan. Langsung berfungsi."