
# date_add
date_add函数用于计算按照days幅度递增startdate日期的天数。
如需要获取当前日期基础上指定变动幅度的日期，可结合[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)函数共同使用。
请注意date_add函数与[date_sub](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_date_sub.html)函数逻辑反。
#### 命令格式
```
date_add(string startdate, int days)
```
#### 参数说明
表1参数说明 
| 参数         | 是否必选 | 参数类型                                                                                                                                                | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| start_date | 是    | DATE 或 STRING | 代表起始日期。 支持以下格式： - yyyy-mm-dd  - yyyy-mm-dd hh:mi:ss  - yyyy-mm-dd hh:mi:ss.ff3                                                                           |
| days       | 是    | BIGINT                                                                                                                                              | 代表需要增加天的数量。 - days大于0，则为增加天数。  - days小于0，则减去天数。  - days等于0，即加0天，日期不变。  - days值为NULL时，返回NULL。   |
   
#### 返回值说明
返回DATE类型的日期值，格式为yyyy-mm-dd。
![](https://support.huaweicloud.com/sqlref-spark-dli/public_sys-resources/note_3.0-zh-cn.png)
- startdate非DATE或STRING类型时，返回报错，错误信息：data type mismatch；
- startdate为DATE或STRING类型，但不符合日期值的入参格式时，返回NULL；
- startdate值为NULL时，返回NULL。
- days值为NULL时，返回NULL。
 
#### 示例代码
返回2023-03-01。加1天，结果超出当年2月份的最后1天，实际值为下个月的第1天。
```
select date_add('2023-02-28 00:00:00', 1);
```
返回2023-02-27。减1天。
```
select date_add(date '2023-02-28', -1);
```
返回2023-03-20。
```
select date_add('2023-02-28 00:00:00', 20);
```
假设当前时间为2023-08-14 16:00:00，返回2023-08-13。
```
select date_add(getdate(),-1);
```
返回NULL。
```
select date_add('2023-02-28 00:00:00', null);
```
