

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# MONTHS\_BETWEEN 函數
<a name="r_MONTHS_BETWEEN_function"></a>

MONTHS\_BETWEEN 可判斷兩個日期之間有幾個月。

如果第一個日期晚於第二個日期，結果為正值，否則結果為負值。

如果引數為 null，則結果為 NULL。

## 語法
<a name="r_MONTHS_BETWEEN_function-synopsis"></a>

```
MONTHS_BETWEEN( date1, date2 )
```

## 引數
<a name="r_MONTHS_BETWEEN_function-arguments"></a>

 *date1*   
`DATE` 資料類型的欄，或是隱含評估為 `DATE` 類型的運算式。

 *date2*   
`DATE` 資料類型的欄，或是隱含評估為 `DATE` 類型的運算式。

## 傳回類型
<a name="r_MONTHS_BETWEEN_function-return-type"></a>

FLOAT8

結果的整個數字部分是基於日期的年份和月份值的差異。結果的小數部分是透過日期的天和時間戳記值計算而得，且一個月假設為 31 天。

如果 *date1* 和 *date2* 都含有某個月份中的相同日期 (例如，1/15/14 和 2/15/14) 或某月的最後一天 (例如，8/31/14 和 9/30/14)，則結果是根據日期之年份和月份值的整個數值，而不論時間戳記部分符合的情況 (若有)。

## 範例
<a name="r_MONTHS_BETWEEN_function-examples"></a>

下列範例傳回 1/18/1969 和 3/18/1969 的月份。

```
select months_between('1969-01-18', '1969-03-18')
as months;

months
----------
-2
```

下列範例傳回 1/18/1969 和 1/18/1969 的月份。

```
select months_between('1969-01-18', '1969-01-18')
as months;

months
----------
0
```

 下列範例傳回事件之第一個和最後一個顯示間的月份。

```
select eventname, 
min(starttime) as first_show,
max(starttime) as last_show,
months_between(max(starttime),min(starttime)) as month_diff
from event 
group by eventname
order by eventname
limit 5;

eventname         first_show             last_show              month_diff
---------------------------------------------------------------------------
.38 Special       2008-01-21 19:30:00.0  2008-12-25 15:00:00.0  11.12
3 Doors Down      2008-01-03 15:00:00.0  2008-12-01 19:30:00.0  10.94
70s Soul Jam      2008-01-16 19:30:00.0  2008-12-07 14:00:00.0  10.7
A Bronx Tale      2008-01-21 19:00:00.0  2008-12-15 15:00:00.0  10.8
A Catered Affair  2008-01-08 19:30:00.0  2008-12-19 19:00:00.0  11.35
```