2011-02-10 65 views
6

Tôi cần một hàm trong Oracle như thế này.Lấy ngày cuối cùng của tháng trước trong chức năng Oracle

Khi tôi đưa ra tham số một ngày đơn giản. Sau đó, chức năng sẽ nhận được tôi ngày cuối cùng của tháng trước đó.

Ví dụ:

FunctionName(10.02.2011) Result should be 31.01.2011 

FunctionName(21.03.2011) Result should be 28.02.2011 

FunctionName(31.07.2011) Result should be 30.06.2011 (Even date is last day of month) 

Làm thế nào tôi có thể làm điều đó? Nhân tiện, tôi không bao giờ sử dụng Oracle.

Trả lời

26
SELECT LAST_DAY(ADD_MONTHS(yourdate,-1)) 
+2

Các chức năng này là một phần của tiêu chuẩn Oracle trong một vài thập kỷ. – APC

+1

@APC oh, rất hay để biết :). Tôi thực sự mới với Oracle. – Lamak

2

select LAST_DAY(ADD_MONTHS(sysdate, -1)) from dual;

định dạng ngày kết quả như bạn muốn (tôi sẽ để lại một cho bạn;)

7

Để thay thế cho câu trả lời khác ở đây, bạn cũng có thể tìm thấy những ngày cuối cùng của tháng trước bằng cách một ngày trước khi ngày đầu tiên của tháng này

SELECT trunc(your_date, 'MM')-1 as new_date from your_table 

tôi có lẽ vẫn khuyên bạn nên sử dụng last_day(add_months(xxx,-1)) nhưng chỉ hiển thị một sự thay thế.

Các vấn đề liên quan