Trong Cơ sở dữ liệu Oracle, chúng ta có thể sử dụng LAST_DAY()
hàm để trả về ngày cuối cùng của một tháng nhất định. Đây có thể là ngày cuối cùng của tháng hiện tại hoặc ngày cuối cùng của tháng dựa trên một ngày cụ thể.
Ví dụ
SELECT LAST_DAY(date '2035-02-15')
FROM DUAL;
Kết quả:
28-FEB-35
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.
Dưới đây là những gì sẽ xảy ra khi chúng ta dời ngày về sau một năm:
SELECT LAST_DAY(date '2036-02-15')
FROM DUAL;
Kết quả:
29-FEB-36
Năm sau là một năm nhuận, và do đó, chúng ta có 29 ngày trong tháng Hai năm đó.
Lưu ý rằng LAST_DAY()
hàm trả về một DATE
giá trị. Điều này đúng ngay cả khi chúng ta vượt qua TIMESTAMP
giá trị:
SELECT LAST_DAY(TIMESTAMP '2036-07-15 15:30:45.12345')
FROM DUAL;
Kết quả:
31-JUL-36
Tháng hiện tại
Ví dụ này lấy ngày cuối cùng của tháng hiện tại:
SELECT
SYSDATE,
LAST_DAY(SYSDATE)
FROM DUAL;
Kết quả:
SYSDATE | LAST_DAY (SYSDATE) |
---|---|
12-APR-22 | 30-APR-22 |
Trong trường hợp này, tôi đã sử dụng SYSDATE
cho ngày hiện tại.
Tháng tới
Chúng tôi có thể sử dụng ADD_MONTHS()
chức năng thêm một hoặc nhiều tháng vào ngày hiện tại:
SELECT
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE, 1))
FROM DUAL;
Kết quả:
SYSDATE | LAST_DAY (ADD_MONTHS (SYSDATE, 1)) |
---|---|
12-APR-22 | 31-MAY-22 |
Trong trường hợp này, chúng ta có ngày cuối cùng của tháng tới.
Tháng trước
Chúng tôi có thể thêm một giá trị âm để lấy ngày cuối cùng của tháng trước:
SELECT
SYSDATE,
LAST_DAY(ADD_MONTHS(SYSDATE, -1))
FROM DUAL;
Kết quả:
SYSDATE | LAST_DAY (ADD_MONTHS (SYSDATE, -1)) |
---|---|
12-APR-22 | 31-Tháng Ba-22 |