日付関数

[Oracle] 2つの日付間の月数を取得するSQL(MONTHS_BETWEEN)

2つの日付の間の月数を取得するには、MONTHS_BETWEENを使用します。

MONTHS_BETWEEN(日付1, 日付2)

それではサンプルを見てみましょう。
以下のようなemployeesテーブルがあります。

id name joining
1 荒木 太郎 2018/10/01
2 井端 次郎 2019/04/01


現在のシステム日付(2019/12/16)とjoining列の間の月数を取得するSQLです。

上記を実行し、抽出された結果がこちらです。

MONTHS_BETWEEN(SYSDATE, joining)
14.51299096475507765830346475507765830346
8.51300477897252090800477897252090800478


現在のシステム日付とjoining列の間の月数が、それぞれ取得できました。

しかし、この結果からもわかるように、日数以下の差が小数として表示されるため非常に見づらいです。

MONTHS_BETWEENを使用する場合、月数の差だけが分かればよいケースがほとんどなので、以下のようにTRUNCにネストして小数点以下を切り捨てることで、月数のみを整数値で取得することが可能です。

[Oracle] 算術関数 数値の切り捨てSQL(TRUNC)数値の切り捨て 小数点以下で切り捨てする 数値の切り捨てをするには、TRUNCを使用します。 TRUNC(数値, 有効桁数...

 
 
以上が、2つの日付の間の月数を取得する関数「MONTHS_BETWEEN」の使い方です。
ぜひ参考にしてみてください。