Di Oracle Database, NEXT_DAY()
fungsi mengembalikan tanggal contoh pertama dari hari kerja yang ditentukan yang lebih lambat dari tanggal yang ditentukan.
Sintaks
Sintaksnya seperti ini:
NEXT_DAY(date, char)
Dimana date
adalah tanggal dan char
adalah hari kerja yang ditentukan.
char
argumen harus berupa hari dalam seminggu dalam bahasa tanggal sesi saat ini, baik nama lengkap atau singkatannya. Jumlah minimum huruf yang diperlukan adalah jumlah huruf dalam versi singkatan. Setiap karakter yang segera mengikuti singkatan yang valid akan diabaikan.
Contoh
Ini contohnya:
SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;
Hasil:
Next Friday ______________ 05-OCT-35
Singkatan Hari Kerja
Contoh di atas menggunakan nama hari kerja lengkap. Dalam contoh berikut, saya menggunakan singkatan sebagai gantinya:
SELECT NEXT_DAY('01-OCT-2035', 'FRI') AS "Next Friday"
FROM DUAL;
Hasil:
Next Friday ______________ 05-OCT-35
Bagaimanapun, hasilnya tetap sama.
Faktanya, selama bagian pertama dari argumen berisi singkatan hari kerja yang valid, fungsi akan mengembalikan tanggal hari kerja berikutnya yang cocok dengan singkatan itu. Setiap karakter yang segera mengikuti singkatan yang valid akan diabaikan. Jadi, meskipun seluruh argumen sebenarnya bukan nama hari kerja yang valid, selama bagian pertama adalah singkatan hari kerja yang valid, itu akan mengembalikan hasil untuk hari kerja itu.
Contoh:
SELECT
NEXT_DAY('01-OCT-2035','Monkey') AS "Next Monkey",
NEXT_DAY('01-OCT-2035','Thumbnail') AS "Next Thumbnail",
NEXT_DAY('01-OCT-2035','Friar Tuck') AS "Next Friar Tuck"
FROM DUAL;
Hasil:
Next Monkey Next Thumbnail Next Friar Tuck ______________ _________________ __________________ 08-OCT-35 04-OCT-35 05-OCT-35
Setelan Bahasa
Seperti yang disebutkan, hari kerja atau singkatannya harus berupa hari dalam seminggu dalam bahasa tanggal sesi saat ini.
Inilah yang terjadi ketika saya mengubah bahasa sesi saya, lalu coba jalankan contoh yang sama lagi:
ALTER SESSION SET NLS_LANGUAGE = 'Spanish';
SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;
Hasil:
Session alterado. Error que empieza en la línea: 1 del comando : SELECT NEXT_DAY('01-OCT-2035','FRIDAY') AS "Next Friday" FROM DUAL Informe de error - ORA-01846: día de la semana no válido
Dalam hal ini, bahasa saya adalah bahasa Spanyol, jadi kami harus memberikan hari kerja dalam bahasa Spanyol:
ALTER SESSION SET NLS_LANGUAGE = 'Spanish';
SELECT NEXT_DAY('01-OCT-2035', 'viernes') AS "Next Friday"
FROM DUAL;
Hasil:
Next Friday ______________ 05-OCT-35
Argumen Null
Jika salah satu argumen adalah null
, hasilnya null
:
ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN';
SET NULL 'null';
SELECT
NEXT_DAY(null, 'FRIDAY') AS "1",
NEXT_DAY('01-OCT-2035', null) AS "2"
FROM DUAL;
Hasil:
1 2 _______ _______ null null
Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali null
terjadi sebagai akibat dari SQL SELECT
penyataan.
Namun, Anda dapat menggunakan SET NULL
untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null
harus dikembalikan.
Argumen Tidak Ada
Memanggil NEXT_DAY()
dengan jumlah argumen yang salah, atau tanpa memberikan argumen apa pun, menghasilkan kesalahan:
SELECT NEXT_DAY()
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT NEXT_DAY() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: