Home実験室 − No.0052


        No.0052(SQL)
        月単位の日付の計算(ADD_MONTHS関数、LAST_DAY関数、MONTHS_BETWEEN関数)

■環境
  □OS: Windows XP Professional SP3
  □Oracle: Oracle Database 11g R2 (Standard)
  □OSログインユーザ: ORA_DBAグループ
  □Oracleユーザ: dicdic(実験用ユーザー)

■実験
  0. 実験ユーザー「dicdic」でコネクトする。

SQL> conn dicdic/Oracle11g 接続されました。 SQL>



  1. 【ADD_MONTHS関数】
     ADD_MONTHS関数を使うと、◯か月後の日付を求めることができる。ADD_MONTHS('起算日',月数)な感じで。

SQL> SELECT ADD_MONTHS('2011-04-15',3) FROM DUAL; ADD_MONT -------- 11-07-15 SQL>



  2. ADD_MONTHS関数は年をまたいでもOK。

SQL> SELECT ADD_MONTHS('2011-10-15',5) FROM DUAL; ADD_MONT -------- 12-03-15 SQL>



  3. 人間のセンスとしての「○ヵ月後」という感性もサポートしてくれる。
     たとえば、1月31日の一ヵ月後という場合、あなたは何と答えますか?
     下の結果を見ると、単純に月の数字を足しているだけというわけではないようです。

SQL> SELECT ADD_MONTHS('2011-01-31',1) FROM DUAL; ADD_MONT -------- 11-02-28 SQL>



  4. 【LAST_DAY関数】
     月末の日付が話題になったところで、もうひとつ面白い関数を。
     LAST_DAY関数は指定した月の末日を返してくれる。

SQL> SELECT LAST_DAY('2011/06/07') from dual; LAST_DAY -------- 11-06-30 SQL>



  5. 「今月は何日までだったっけ?」 なんていう場合はSYSDATEを使えばよい。
※ 現在日付は2011年5月27日です

SQL> SELECT LAST_DAY(SYSDATE) from dual; LAST_DAY -------- 11-05-31 SQL>



  6. 【MONTHS_BETWEEN関数】
     最後に月単位の引き算を。
     MONTHS_BETWEEN関数は、2つの日付の間が「何ヶ月間か」を返してくれる。

SQL> SELECT MONTHS_BETWEEN('2011-01-15','2010-11-15') FROM DUAL; MONTHS_BETWEEN('2011-01-15','2010-11-15') ----------------------------------------- 2 SQL>



  7. MONTHS_BETWEEN関数でも、もちろんSYSDATEを使用できる。
※ 現在日付は2011年5月27日です

SQL> SELECT MONTHS_BETWEEN(SYSDATE,'2010-11-15') FROM DUAL; MONTHS_BETWEEN(SYSDATE,'2010-11-15') ------------------------------------ 6.412018 SQL>





    【PR】    Oracle実験室監修  『Oracleアーキテクチャ鳥瞰図』 PDF  (Oracleのアーキテクチャを一目で俯瞰できるイラスト)  


Home実験室 − No.0052

© 2011-2011   Amateur Laboratory of ORACLE
inserted by FC2 system