メインコンテンツまでスキップ
バージョン: 4.x

MONTHS_BETWEEN

説明

MONTHS_BETWEEN関数は、2つの日付間の月数を浮動小数点数で計算します。この関数は2つの日付引数と1つのオプションのboolean引数を受け取ります。

ヒント

この関数はバージョン3.0.6以降でサポートされています。

注意: <enddate><startdate>の両方がそれぞれの月の最終日である場合、関数は特別な処理を適用します。日数に基づく小数部分を考慮せずに、完全な月の差を返します。これにより、ある月の末日と別の月の末日を比較する際の一貫性が保証されます。

例:

  • months_between('2024-01-31', '2024-02-29')-1.0を返します。両方の日付がそれぞれの月の最終日(1月31日と2月29日)であるため、結果は小数調整なしの完全な月の差として扱われます。
  • months_between('2024-01-29', '2024-02-29')-1.0を返します。月の日が同じであるためです。
  • months_between('2024-01-30', '2024-02-29')-0.96774194を返します。月の日が同じでなく、月の最終日でもないためです。

構文

MONTHS_BETWEEN(<enddate>, <startdate> [, <round_type>])

パラメータ

Parameterデスクリプション
<enddate>終了日。差分計算における後の日付を表します。DATE(例:YYYY-MM-DD)またはDATETIME(例:YYYY-MM-DD HH:MM:SS)タイプをサポートします。
<startdate>開始日。差分計算における前の日付を表します。DATE(例:YYYY-MM-DD)またはDATETIME(例:YYYY-MM-DD HH:MM:SS)タイプをサポートします。
<round_type>結果を小数点第8位で丸めるかどうか。trueまたはfalseをサポートします。デフォルトはtrueです。

Return Value

<enddate>から<startdate>を引いた結果の月数を浮動小数点数で返します

result = (<enddate>.year - <startdate>.year) * 12 + <enddate>.month - <startdate>.month + (<enddate>.day - <startdate>.day) / 31.0

  • <enddate>または<startdate>のいずれか、または両方がNULLの場合、NULLを返します
  • <round_type>trueの場合、結果は小数点第8位で丸められます。

Example

select months_between('2020-12-26','2020-10-25'),months_between('2020-10-25 10:00:00','2020-12-26 11:00:00',false);
+-------------------------------------------+-------------------------------------------------------------------+
| months_between('2020-12-26','2020-10-25') | months_between('2020-10-25 10:00:00','2020-12-26 11:00:00',false) |
+-------------------------------------------+-------------------------------------------------------------------+
| 2.03225806 | -2.032258064516129 |
+-------------------------------------------+-------------------------------------------------------------------+