Oracle SQL 関数 : LAST_DAY : 指定月の最終日計算

 dateRet := LAST_DAY( dateSrc );
  
  LAST_DAYは日付dataSrcの末日の日付を返します。この関数を使えば簡単に該当月の最終日を計算してくれる
  ので一般の言語の様に別に関数を設ける必要がありません。
SQL> SELECT LAST_DAY(TO_DATE('2000/02/01')),LAST_DAY(TO_DATE('2001/02/01')),
  2         LAST_DAY(TO_DATE('2002/02/01')),LAST_DAY(TO_DATE('2003/02/01'))
  3  FROM DUAL;

LAST_DAY LAST_DAY LAST_DAY LAST_DAY
-------- -------- -------- --------
00-02-29 01-02-28 02-02-28 03-02-28

この例は2000年から2003年の2月の末日を求めています。閏年の計算をしなくても簡単に行えます。

SQL> SELECT
  2   LAST_DAY(SYSDATE) AS SYSDATE_LAST
  3  ,TO_CHAR(LAST_DAY(SYSDATE),'YYYY/MM/DD HH24:MI:SS') AS 日付文字列
  4  ,TO_CHAR(TRUNC(LAST_DAY(SYSDATE),'DD'),'YYYY/MM/DD HH24:MI:SS') AS 日付文字列2
  5  ,LAST_DAY(TO_DATE('2004/02/01')) FROM DUAL;

SYSDATE_ 日付文字列          日付文字列2         LAST_DAY
-------- ------------------- ------------------- --------
04-10-31 2004/10/31 17:53:25 2004/10/31 00:00:00 04-02-29

LAST_DAYは日付部分は月末を返すが、時刻部分は指定日付型の時刻をそのまま引き継ぐ様です。上のSQLを見ると良くわかるとは思いますが、もし時刻が00:00:00が必要であればTRUNC関数で切り捨てる必要があります。