日付型の差分を月で取得するには、MONTHS_BETWEENを使用します。
構文
- (日付1と日付2の月差を取得する)
- MONTHS_BETWEEN(日付1, 日付2)
日付1、日付2はDATE型で指定します。
サンプル
例)MONTHS_BETWEENのサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
--2018/6/10と2018/6/10の月の差分を取得する SELECT MONTHS_BETWEEN(TO_DATE('2018/06/10'), TO_DATE('2018/06/10')) FROM dual; ⇒ 0 --2018/6/10と2018/6/9の月の差分を取得する SELECT MONTHS_BETWEEN(TO_DATE('2018/06/10'), TO_DATE('2018/06/09')) FROM dual; ⇒ .032258065 --2018/6/10と2018/6/11の月の差分を取得する SELECT MONTHS_BETWEEN(TO_DATE('2018/06/10'), TO_DATE('2018/06/11')) FROM dual; ⇒ -.03225806 --2018/6/10と2018/5/10の月の差分を取得する SELECT MONTHS_BETWEEN(TO_DATE('2018/06/10'), TO_DATE('2018/05/10')) FROM dual; ⇒ 1 --2018/6/10と2017/6/10の月の差分を取得する SELECT MONTHS_BETWEEN(TO_DATE('2018/06/10'), TO_DATE('2017/06/10')) FROM dual; ⇒ 12 |
小数点以下を切捨てたい場合は、TRUNCを使えばOKです。
1 2 3 4 5 6 7 8 9 10 11 |
--2018/6/10と2018/6/10の月の差分を取得する SELECT TRUNC(MONTHS_BETWEEN(TO_DATE('2018/06/10'), TO_DATE('2018/06/10'))) FROM dual; ⇒ 0 --2018/6/10と2018/5/11の月の差分を取得する SELECT TRUNC(MONTHS_BETWEEN(TO_DATE('2018/06/10'), TO_DATE('2018/05/11'))) FROM dual; ⇒ 0 --2018/6/10と2018/5/10の月の差分を取得する SELECT TRUNC(MONTHS_BETWEEN(TO_DATE('2018/06/10'), TO_DATE('2018/05/10'))) FROM dual; ⇒ 1 |
解説
- MONTHS_BETWEENは月基準の差分が小数点表記で返ります。
- 月の差分を整数で取得したい場合は、以下記事をご覧ください。
→ [サンプル共通関数] 月の差分を整数で取得するFunction