
# dateadd
dateadd函数用于按照指定的单位datepart和幅度delta修改date的值。
如需要获取当前日期基础上指定变动幅度的日期，可结合[current_date](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_current_date.html)或[getdate](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_getdate.html)函数共同使用。
#### 命令格式
```
dateadd(string date, bigint delta, string datepart)
```
#### 参数说明
表1参数说明 
| 参数       | 是否必选 | 参数类型                                                                                                                                              | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| date     | 是    | DATE 或 STRING | 代表起始日期。 支持以下格式： - yyyy-mm-dd  - yyyy-mm-dd hh:mi:ss  - yyyy-mm-dd hh:mi:ss.ff3                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| delta    | 是    | BIGINT                                                                                                                                            | 代表修改幅度。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| datepart | 是    | STRING                                                                                                                                            | 代表修改的时间单位。 参数datepart支持扩展的日期格式：年-year、月-month或-mon、日-day和小时-hour。 - yyyy代表年份。  - MM代表月份。  - dd代表天。  - hh代表小时。  - mi代表分钟。  - ss代表秒。   |
   
#### 返回值说明
返回STRING类型的日期值。
![](https://support.huaweicloud.com/sqlref-spark-dli/public_sys-resources/note_3.0-zh-cn.png)
- date非DATE或STRING类型时，返回报错，错误信息：data type mismatch。
- date为DATE或STRING类型，但不符合日期值的入参格式时，返回NULL。
- date值为NULL时，返回NULL。
- delta或datepart值为NULL时，返回NULL。
 
#### 示例代码
返回2023-08-15 17:00:00。加1天。
```
select dateadd( '2023-08-14 17:00:00', 1, 'dd');
```
返回2025-04-14 17:00:00。加20个月，月份溢出，年份加1。
```
select dateadd('2023-08-14 17:00:00', 20, 'mm');
```
返回2023-09-14 17:00:00。
```
select dateadd('2023-08-14 17:00:00', 1, 'mm');
```
返回2023-09-14。
```
select dateadd('2023-08-14', 1, 'mm');
```
假设当前时间为2023-08-14 17:00:00，返回2023-08-13 17:00:00。
```
select dateadd(getdate(),-1,'dd');
```
返回NULL。
```
select dateadd(date '2023-08-14', 1, null);
```
