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

NEXT_DAY() Fungsi di Oracle

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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengembalikan Daftar Wilayah yang Didukung di Oracle

  2. Fungsi COS() di Oracle

  3. Oracle SQL:Memahami perilaku SYS_GUID() saat hadir dalam tampilan sebaris?

  4. hapus baris duplikat dari Oracle

  5. Sisipkan Massal ke Oracle menggunakan .NET