Trong Cơ sở dữ liệu Oracle, LAST_DAY()
hàm trả về ngày cuối cùng của tháng có chứa ngày được cung cấp.
Nó chấp nhận một đối số, là ngày mà bạn muốn tìm ngày cuối cùng của tháng.
Cú pháp
Cú pháp như sau:
LAST_DAY(date)
Nơi date
là biểu thức ngày mà bạn muốn tìm ngày cuối cùng của tháng.
Ví dụ
Đây là một ví dụ:
SELECT LAST_DAY(DATE '2030-02-01')
FROM DUAL;
Kết quả:
28-FEB-30
Trong trường hợp này, chúng tôi đang sử dụng một ngày trong tháng Hai. Hóa ra, tháng Hai có 28 ngày trong năm đó.
Đây là những gì sẽ xảy ra nếu chúng ta tăng ngày này sang năm nhuận tiếp theo:
SELECT LAST_DAY(DATE '2032-02-01')
FROM DUAL;
Kết quả:
29-FEB-32
Ngày cuối cùng của tháng được xác định bởi tham số phiên NLS_CALENDAR
. Xem Cách Kiểm tra Giá trị của Tham số NLS để tìm hiểu phiên của bạn đang sử dụng lịch nào. Của tôi đang sử dụng lịch Gregorian.
Ngoài ra, ngày được trả về ở định dạng được chỉ định cho phiên của bạn. Trong ví dụ này, phiên của tôi đang sử dụng định dạng mặc định cho khi NLS_TERRITORY
tham số được đặt thành AMERICA
. Bạn luôn có thể thay đổi định dạng ngày giờ của phiên nếu muốn.
Các giá trị ngày giờ khác
Nó cũng hoạt động với các giá trị ngày giờ khác, chẳng hạn như TIMESTAMP
, v.v.:
SELECT LAST_DAY(TIMESTAMP '2030-02-01 10:30:45.34567')
FROM DUAL;
Kết quả:
28-FEB-30
Tuy nhiên, kiểu trả về luôn là DATE
, bất kể kiểu dữ liệu của đối số.
Các ngày ngoài phạm vi
Các ngày bằng không và các ngày khác ngoài phạm vi dẫn đến lỗi.
Ví dụ:
SELECT LAST_DAY(DATE '0000-00-00')
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT LAST_DAY(DATE '0000-00-00') FROM DUAL Error at Command Line : 1 Column : 22 Error report - SQL Error: ORA-01841: (full) year must be between -4713 and +9999, and not be 0 01841. 00000 - "(full) year must be between -4713 and +9999, and not be 0" *Cause: Illegal year entered *Action: Input year in the specified range
Như thông báo lỗi nêu rõ, năm (đầy đủ) phải nằm trong khoảng -4713
và +9999
và không phải là 0
.
Ngày hiện tại
Chúng tôi có thể vượt qua SYSDATE
làm đối số datetime để sử dụng ngày hiện tại:
SELECT
SYSDATE,
LAST_DAY(SYSDATE)
FROM DUAL;
Kết quả:
SYSDATE LAST_DAY(SYSDATE) ____________ ____________________ 12-AUG-21 31-AUG-21
Thiếu đối số
Đang gọi LAST_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 LAST_DAY()
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT LAST_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: