2つの日付の間の月数を取得するには、MONTHS_BETWEENを使用します。
MONTHS_BETWEEN(日付1, 日付2)
それではサンプルを見てみましょう。
以下のようなemployeesテーブルがあります。
id | name | joining |
---|---|---|
1 | 荒木 太郎 | 2018/10/01 |
2 | 井端 次郎 | 2019/04/01 |
現在のシステム日付(2019/12/16)とjoining列の間の月数を取得するSQLです。
1 |
SELECT MONTHS_BETWEEN(SYSDATE, joining) FROM employees; |
上記を実行し、抽出された結果がこちらです。
MONTHS_BETWEEN(SYSDATE, joining) |
---|
14.51299096475507765830346475507765830346 |
8.51300477897252090800477897252090800478 |
現在のシステム日付とjoining列の間の月数が、それぞれ取得できました。
しかし、この結果からもわかるように、日数以下の差が小数として表示されるため非常に見づらいです。
MONTHS_BETWEENを使用する場合、月数の差だけが分かればよいケースがほとんどなので、以下のようにTRUNCにネストして小数点以下を切り捨てることで、月数のみを整数値で取得することが可能です。
1 |
SELECT TRUNC(MONTHS_BETWEEN(SYSDATE, joining)) FROM employees; |
[Oracle] 算術関数 数値の切り捨てSQL(TRUNC)数値の切り捨て
小数点以下で切り捨てする
数値の切り捨てをするには、TRUNCを使用します。
TRUNC(数値, 有効桁数...
以上が、2つの日付の間の月数を取得する関数「MONTHS_BETWEEN」の使い方です。
ぜひ参考にしてみてください。