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' )) |
LAST_DAY LAST_DAY LAST_DAY LAST_DAY |
00-02-29 01-02-28 02-02-28 03-02-28 |
この例は2000年から2003年の2月の末日を求めています。閏年の計算をしなくても簡単に行えます。
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関数で切り捨てる必要があります。
本書用のWebアプリを使ってSQLを実行し学習していきます。初心者の方に分かりやすく、図表を多く使って解説されています。 学習の最後には200問越えのドリルが付いていてSQLのスキルが試せる様になっています。