Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hàm NEXT_DAY () trong Oracle

Trong Cơ sở dữ liệu Oracle, NEXT_DAY() hàm trả về ngày của phiên bản đầu tiên của ngày trong tuần được chỉ định muộn hơn ngày được chỉ định.

Cú pháp

Cú pháp như sau:

NEXT_DAY(date, char)

Nơi date là ngày và char là ngày trong tuần được chỉ định.

Các ký tự char đối số phải là một ngày trong tuần bằng ngôn ngữ ngày của phiên hiện tại, tên đầy đủ hoặc chữ viết tắt. Số lượng chữ cái tối thiểu cần thiết là số lượng chữ cái trong phiên bản viết tắt. Bất kỳ ký tự nào ngay sau chữ viết tắt hợp lệ đều bị bỏ qua.

Ví dụ

Đây là một ví dụ:

SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;

Kết quả:

   Next Friday 
______________ 
05-OCT-35     

Chữ viết tắt các ngày trong tuần

Ví dụ trên sử dụng tên đầy đủ của các ngày trong tuần. Trong ví dụ sau, tôi sử dụng chữ viết tắt để thay thế:

SELECT NEXT_DAY('01-OCT-2035', 'FRI') AS "Next Friday"
FROM DUAL;

Kết quả:

   Next Friday 
______________ 
05-OCT-35     

Dù bằng cách nào thì kết quả cũng giống nhau.

Trên thực tế, miễn là phần đầu tiên của đối số chứa chữ viết tắt ngày trong tuần hợp lệ, hàm sẽ trả về ngày của ngày trong tuần tiếp theo khớp với chữ viết tắt đó. Bất kỳ ký tự nào ngay sau chữ viết tắt hợp lệ đều bị bỏ qua. Vì vậy, ngay cả khi toàn bộ đối số thực sự không phải là tên ngày trong tuần hợp lệ, miễn là phần đầu tiên là chữ viết tắt hợp lệ của ngày trong tuần, nó sẽ trả về kết quả cho ngày trong tuần đó.

Ví dụ:

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;

Kết quả:

   Next Monkey    Next Thumbnail    Next Friar Tuck 
______________ _________________ __________________ 
08-OCT-35      04-OCT-35         05-OCT-35         

Cài đặt ngôn ngữ

Như đã đề cập, ngày trong tuần hoặc chữ viết tắt của nó phải là một ngày trong tuần theo ngôn ngữ ngày của phiên hiện tại.

Dưới đây là những gì sẽ xảy ra khi tôi thay đổi ngôn ngữ phiên của mình, sau đó thử chạy lại cùng một ví dụ:

ALTER SESSION SET NLS_LANGUAGE = 'Spanish';

SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;

Kết quả:

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

Trong trường hợp này, ngôn ngữ của tôi là tiếng Tây Ban Nha nên chúng tôi cần cung cấp ngày trong tuần bằng tiếng Tây Ban Nha:

ALTER SESSION SET NLS_LANGUAGE = 'Spanish';

SELECT NEXT_DAY('01-OCT-2035', 'viernes') AS "Next Friday"
FROM DUAL;

Kết quả:

   Next Friday 
______________ 
05-OCT-35     

Đối số rỗng

Nếu một trong hai đối số là null , kết quả là 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;

Kết quả:

      1       2 
_______ _______ 
null    null   

Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào null xảy ra do một SELECT trong SQL tuyên bố.

Tuy nhiên, bạn có thể sử dụng SET NULL để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null nên được trả lại.

Thiếu đối số

Đang gọi NEXT_DAY() với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào, dẫn đến lỗi:

SELECT NEXT_DAY()
FROM DUAL;

Kết quả:

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. Cách tạo UUID phiên bản 4 (ngẫu nhiên) trên Oracle?

  2. cột không được phép ở đây lỗi trong câu lệnh INSERT

  3. Chức năng ngủ trong ORACLE

  4. tìm kiếm văn bản oracle blob

  5. Các hàm chuỗi của Oracle (Danh sách đầy đủ)