2017/12/07
ORACLEの日付関数のリファレンスです。
※当ページにおいて、検索結果イメージの半角スペースは【_】、NULLは【NULL】と表現しています。
sponsored link
ADD_MONTHS
文法
ADD_MONTHS(引数1[日付型],引数2[数値型])
戻り値
日付型
説明
引数1に引数2(月数)を加えた日付値をDATE型で戻す
引数2(月数)にマイナス値を設定することで減算も可能
1 2 3 4 5 6 7 8 9 |
SELECT a ,ADD_MONTHS(a,1) func1 ,ADD_MONTHS(a,-1) func2 FROM test_table ; A FUNC1 FUNC2 ---------- ---------- ---------- 2016/01/20 2016/02/20 2015/12/20 |
備考
1月30日の1月加算といった加算減算結果が月の最終日を超える場合、
月の最終日を戻す
1 2 3 4 5 6 7 8 9 |
SELECT a ,ADD_MONTHS(a,1) func1 ,ADD_MONTHS(a,-1) func2 FROM test_table ; A FUNC1 FUNC2 ---------- ---------- ---------- 2016/03/31 2016/04/30 2016/02/29 |
また、月の最終日を引数1に指定した場合、月の最終日を戻す
1 2 3 4 5 6 7 8 9 |
SELECT a ,ADD_MONTHS(a,1) func1 ,ADD_MONTHS(a,-1) func2 FROM test_table ; A FUNC1 FUNC2 ---------- ---------- ---------- 2016/02/29 2016/03/31 2016/01/31 |
上記2つの特性から、ADD_MONTHSを複数重ねる場合は注意が必要
1回で処理する場合と結果が変わることがある
1 2 3 4 5 6 7 8 9 |
SELECT a ,ADD_MONTHS(a,2) func1 ,ADD_MONTHS(ADD_MONTHS(a,1),1) func2 FROM test_table ; A FUNC1 FUNC2 ---------- ---------- ---------- 2016/01/30 2016/03/30 2016/03/31 |
NEXT_DAY
文法
NEXT_DAY(引数1[日付型],引数2[文字型](曜日の名称))
NEXT_DAY(引数1[日付型],引数2[数値型](週初めからの日数1~7))
戻り値
日付型
説明
引数1より未来で直近の引数2(曜日)の日付値をDATE型で戻す
引数2で曜日の名称を指定・・・
NLS初期化パラメータのNLS_DATE_LANGUAGEがJAPANESEの場合、
‘月曜日’~’日曜日’を指定する
※略称での指定も可能(‘月’や’月曜’)
引数2で週初めからの日数を指定・・・
NLS初期化パラメータのNLS_TERRITORYがJAPANの場合、
1が日曜日、2が月曜日・・・7が土曜日となる
※月曜日が週初めの国もあるので注意(ドイツ、フランス、イギリスなど)
日曜日が週初めの国(日本、アメリカ、中国など)
1 2 3 4 5 6 7 8 9 10 11 |
SELECT a ,NEXT_DAY(a,'月曜日') func1 ,NEXT_DAY(a,'月曜') func2 ,NEXT_DAY(a,'月') func3 ,NEXT_DAY(a,2) func4 FROM test_table ; A FUNC1 FUNC2 FUNC3 FUNC4 ---------- ---------- ---------- ---------- ---------- 2016/07/01 2016/07/04 2016/07/04 2016/07/04 2016/07/04 |
LAST_DAY
文法
LAST_DAY(引数1[日付型])
戻り値
日付型
説明
引数1の月末日付をDATE型で戻す
1 2 3 4 5 6 7 8 |
SELECT a ,LAST_DAY(a,1) func FROM test_table ; A FUNC ---------- ---------- 2016/07/04 2016/07/31 |
MONTHS_BETWEEN
文法
MONTHS_BETWEEN(引数1[日付型],引数2[日付型])
戻り値
数値型
説明
引数1・2間の月数を計算する
引数1・2が同じ日であるか、どちらも月末の場合、差を整数で戻す(時分秒は加味しない)
上記以外の場合、1カ月を31日として差を小数部ありで戻す(時分秒を加味する)
引数1>引数2の場合正の値となり、引数1<引数2の場合負の値を戻す
1 2 3 4 5 6 7 8 9 10 11 12 |
SELECT a ,b ,MONTHS_BETWEEN(a,b) func FROM test_table ; A B FUNC ---------- ---------- ---------- 2016/07/04 2016/06/04 1 2016/07/31 2016/06/30 1 2016/06/04 2016/07/04 -1 2016/07/04 2016/06/03 1.03225806 |
ROUND
文法
ROUND(引数1[日付型(DATE型)],引数2[文字型](丸める単位))
※引数2は省略可能、省略した場合’DD’と同義
戻り値
日付型
説明
引数1を引数2で指定した単位で丸めた日付値をDATE型で戻す
引数2のフォーマット
書式モデル | 切捨て単位 | 境界 |
CC SCC |
世紀 | xx51年 |
YYYY SYYYY YEAR SYEAR YYY YY Y |
年 | 7月 |
Q | 四半期 | 2月5月8月11月の16日 |
MM MONTH MON RM |
月 | 16日 |
WW | 対象となる年の最初の日と同じ曜日 | |
W | 対象となる月の最初の日と同じ曜日 | |
DAY DY D |
開始曜日 | 水曜日の12時 |
DD DDD J |
日 | 12時 |
HH HH12 HH24 |
時刻 | 30分 |
MI | 分 | 30秒 |
1 2 3 4 5 6 7 8 9 |
SELECT a ,ROUND(a,'YYYY') func FROM test_table ; A FUNC ---------- ---------- 2016/06/31 2016/01/01 2016/07/01 2017/01/01 |
SYSDATE
文法
SYSDATE
戻り値
日付型
説明
システム日時をDATE型で戻す
1 2 3 4 5 6 7 |
SELECT SYSDATE func FROM test_table ; FUNC ---------- 2016/07/26 |
1 2 3 4 5 6 7 8 |
SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD') func1 ,TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') func2 FROM test_table ; FUNC1 FUNC2 ----------- -------------------- 2016/07/26 2016/07/26 23:59:59 |
SYSTIMESTAMP
文法
SYSTIMESTAMP
戻り値
日付型(TIMESTAMP WITH TIME ZONE型)
説明
システム日時をTIMESTAMP WITH TIME ZONE型で戻す
SYSDATEでは取得できない小数秒も取得できる
小数秒の精度はOSや基盤によって異なり注意が必要
1 2 3 4 5 6 7 |
SELECT SYSTIMESTAMP func FROM test_table ; FUNC ---------- 2016/07/26 |
1 2 3 4 5 6 7 8 |
SELECT TO_CHAR(SYSTIMESTAMP,'YYYY/MM/DD') func1 ,TO_CHAR(SYSTIMESTAMP,'YYYY/MM/DD HH24:MI:SS.FF3') func2 FROM test_table ; FUNC1 FUNC2 ----------- ------------------------ 2016/07/26 2016/07/26 23:59:59.123 |
TO_CHAR
文法
TO_CHAR(引数1[日付型])
TO_CHAR(引数1[日付型],引数2[文字型(日時書式フォーマット)])
戻り値
文字型
説明
引数1を引数2のフォーマットで文字型に変換し戻す
引数2を省略した場合は、NLS初期化パラメータのNLS_DATE_FORMATが使用される
引数2の日時書式フォーマット(代表的なものを掲載)
書式モデル | 説明 |
YYYY | 西暦 |
Y~YYY | 西暦の下1~3桁 |
MM | 月(2桁の数値) |
DD | 日(2桁の数値) |
HH24 | 時刻(24時間表記) |
MI | 分 |
SS | 秒 |
FF1~FF9 | 秒の小数部(引数1がTIMESTAMP WITH TIME ZONE型などの場合のみ有効) |
D |
曜日(1桁の数値) 週の初めからの日にち(1~7) NLS初期化パラメータのNLS_TERRITORYに依存 日本(JAPAN)、アメリカ、中国などは、1が日曜日となる ドイツ、フランス、イギリスなどは、1が月曜日となる |
-/,.;: 半角スペース |
区切り文字 ハイフン、スラッシュ、カンマ、ドット、セミコロン、コロン、半角スペース |
1 2 3 4 5 6 7 |
SELECT SYSTIMESTAMP func FROM test_table ; FUNC ---------- 2016/07/26 |
1 2 3 4 5 6 7 8 |
SELECT TO_CHAR(SYSDATE,'YYYYMMDD') func1 ,TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') func2 FROM test_table ; FUNC1 FUNC2 ----------- -------------------- 2016/07/26 2016/07/26 23:59:59 |
TO_DATE
文法
TO_DATE(引数1[文字型])
TO_DATE(引数1[文字型],引数2[文字型(日時書式フォーマット)])
戻り値
日付型
説明
引数1を引数2のフォーマットでDATE型に変換し戻す
引数2を省略した場合は、NLS初期化パラメータのNLS_DATE_FORMATが使用される
また、指定しなかったフィールドは自動的に補完される
引数2の日時書式フォーマット(代表的なものを掲載)
書式モデル | 説明 |
YYYY | 西暦 |
Y~YYY | 西暦の下1~3桁 |
MM | 月(2桁の数値) |
DD | 日(2桁の数値) |
HH24 | 時刻(24時間表記) |
MI | 分 |
SS | 秒 |
-/,.;: 半角スペース |
区切り文字 ハイフン、スラッシュ、カンマ、ドット、セミコロン、コロン、半角スペース |
1 2 3 4 5 6 7 8 |
SELECT a ,TO_DATE(a,'YYYYMMDD') func FROM test_table ; A FUNC --------- ---------- 20160726 2016/07/26 |
TRUNC
文法
TRUNC(引数1[日付型(DATE型)],引数2[文字型](丸める単位))
※引数2は省略可能、省略した場合’DD’と同義
戻り値
日付型
説明
引数1を引数2で指定した単位で切捨てた日付値をDATE型で戻す
引数2のフォーマット
書式モデル | 切捨て単位 |
CC SCC |
世紀 |
YYYY SYYYY YEAR SYEAR YYY YY Y |
年 |
Q | 四半期 |
MM MONTH MON RM |
月 |
WW | 対象となる年の最初の日と同じ曜日 |
W | 対象となる月の最初の日と同じ曜日 |
DAY DY D |
開始曜日 |
DD DDD J |
日 |
HH HH12 HH24 |
時刻 |
MI | 分 |
1 2 3 4 5 6 7 8 9 |
SELECT a ,TRUNC(a,'YYYY') func FROM test_table ; A FUNC ---------- ---------- 2016/06/31 2016/01/01 2016/07/01 2016/01/01 |