
# months_between
months_between函数用于返回date1与date2之间的月份差。
#### 命令格式
```
months_between(string date1, string date2)
```
#### 参数说明
表1参数说明 
| 参数    | 是否必选 | 参数类型                                                                                                                                                            | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| date1 | 是    | DATE 或 STRING | 代表被减数。 格式为： - yyyy-mm-dd  - yyyy-mm-dd hh:mi:ss  - yyyy-mm-dd hh:mi:ss.ff3              |
| date2 | 是    | DATE 或 STRING | 代表减数。 格式为： - yyyy-mm-dd  - yyyy-mm-dd hh:mi:ss  - yyyy-mm-dd hh:mi:ss.ff3   |
   
#### 返回值说明
返回DOUBLE类型的值。
![](https://support.huaweicloud.com/sqlref-spark-dli/public_sys-resources/note_3.0-zh-cn.png)
- date1、date2非DATE或STRING类型时，返回报错，错误信息：data type mismatch。
- date1、date2为DATE或STRING类型，但不符合日期值的入参格式时，返回NULL。
- 当date1晚于date2时，返回值为正。当date2晚于date1时，返回值为负。
- 当date1和date2分别对应两个月的最后一天，返回整数月；否则计算方式为date1减去date2的天数除以31天，结果向上取整。
- date1或date2值为NULL时，返回NULL。
 
#### 示例代码
- 返回0.0563172。
  ```
  select months_between('2023-08-16 10:54:00', '2023-08-14 17:00:00');
  ```
  
- 返回0.06451613。
  ```
  select months_between('2023-08-16','2023-08-14');
  ```
  
- 返回NULL。
  ```
  select months_between('2023-08-16',null);
  ```
  
- 返回3。
  说明：2025-05-31和2025-02-28分别是各自月份的最后一天，所以返回整数月3
  ```
  months_between('2025-05-31','2025-02-28')
  ```
  
- 返回3。
  说明：2025-05-28和2025-02-28的天数差为89天，89除以31等于2.87，向上取整后为3。
  ```
  months_between('2025-05-28','2025-02-28')
  ```
  
 
