トップ > SQL入門 > 11章
11章 単一行関数(日付関数)

今回は日付関数を書いていきます。

日付関数
SYSDATE 現在の日付を表示
ADD_MONTHS 指定した月数を加算して表示
MONTHS_BETWEEN 2つの日付の月数を表示
NEXT_DAY 指定した曜日の次の曜日の日付を表示
LAST_DAY 月末の日付を表示

では、まずはSYSDATE関数です。この関数は現在の日付を表示する関数です。

  SQL> SELECT sysdate FROM dual;

  SYSDATE
  ---------
  19-SEP-14


上記はおなじみの現在の日付を表示する関数です。
また日付の表示形式はデータベースで設定されている表示書式で表示されます。
本環境では英語に設定されており、その場合の書式は、「DD-MON-RR」で表示されます。

DDは日付、MONは英語の月の先頭3文字、RRは西暦下2桁となります。
書式を変えたい場合は、TO_CHAR関数やデータベースの書式とは
違う形式で表示させることができます
こちらは次章でご紹介していきます。

次はADD_MONTHS関数です。指定した月数を対象の日付に加算する関数です。

  SQL> SELECT add_months('01-JAN-14',5) FROM dual;

  ADD_MONTH
  ---------
  01-JUN-14


上記の場合は1月(JAN)に5か月を足すので、6月(JUN)になりました。また減算も可能です。

  SQL> SELECT add_months('01-JAN-14',-1) FROM dual;

  ADD_MONTH
  ---------
  01-DEC-13


お次はMONTHS_BETWEENです。これも英語の意味の通りなんですが、
2つの日付の差を表示します。

  SQL> SELECT months_between('01-MAR-14','01-JAN-14') FROM dual;

  MONTHS_BETWEEN('01-MAR-14','01-JAN-14')
  ---------------------------------------
                                        2

2つの日付2014/03/01と2014/01/01の差は2か月となりますので、2が表示されます。

続いてNEXT_DAYです。この関数は2つの引数を指定します。
1つ目は日付、2つ目は曜日を指定します。
そして、指定した日付に指定した曜日がいつ来るか表示します。

  SQL> SELECT next_day('01-MAR-14','TUE') FROM dual;

  NEXT_DAY(
  ---------
  04-MAR-14


上記の例では、指定した日付は2014/03/01で曜日は火曜日を指定しましたので、
実行結果としては、2014/03/01以降で火曜日が最初に来る日付は2014/03/04となりました。

では最後に、LAST_DAY関数です。この関数は月末を表示する関数です。

  SQL> SELECT last_day('01-MAR-14') FROM dual;

  LAST_DAY(
  ---------
  31-MAR-14


  SQL> SPAN>SELECT last_day('01-FEB-14') FROM dual;

  LAST_DAY(
  ---------
  28-FEB-14

ちなみに2008年はうるう年ですが、うるう年にも対応しています。

  SQL> SELECT last_day('01-FEB-08') FROM dual;

  LAST_DAY(
  ---------
  29-FEB-08


以上が日付関数でした。

関数はとても多いです。これを全部覚えるのは難しいですね。
試験を受ける方は、すべて覚えるまでは不要ですが、
今回ご紹介した関数は必ず押さえておいたほうがよいかと思います。