# **ADDDATE**

返回与起始日期间隔一定时间间隔的日期。

返回值类型由第一个参数**date**的类型决定。如果**date**是字符串，则返回字符串；如果**date**是日期，则返回日期。

## 语法{#grammar}

ADDDATE(**date**, **offset**, **datepart**)

- **date**：起始日期，日期类型，也可以是日期类型的字符串
- **offset**：时间间隔，表示要增加或减少的时间
- **datepart**：时间间隔类型，不区分大小写，详见[时间间隔类型](../../types.md#relative)

**示例地址：** [ADDDATE](https://demo.succbi.com/v5/bi/adddate)

## 示例{#example}

1. `ADDDATE('2020',1,'y')` 返回2020年的后一年`2021`
2. `ADDDATE('202007',1,'y')` 返回2020年7月的后一年`202107`
3. `ADDDATE('20200715',1,'y')` 返回2020年7月15日的后一年`20210715`
4. `ADDDATE('202007',1,'m')` 返回2020年7月的后一月`202008`
5. `ADDDATE('20200715',1,'d')` 返回2020年7月15日的后一天`20200716`
6. `ADDDATE('20200715',-1,'d')` 返回2020年7月15日的前一天`20200714`
7. `ADDDATE('2020-07-23',2,'m')` 日期格式为yyyy-mm-dd`2020-09-23`
8. `ADDDATE('2020.07.23',2,'m')` 日期格式为yyyy.mm.dd`20200923`
9. `ADDDATE('2020/07/23',2,'m')` 日期格式为yyyy/mm/dd`2020/09/23`
10. `ADDDATE('2020 07 23',2,'m')` 日期格式为yyyy mm dd`20200923`
11. `LASTDAY(ADDDATE(TODAY(),-1,'m'))` 返回当前日期的上个月的最后一天`2022-04-30`
12. `IF(DAY(TODAY())>=15,ADDDATE(ADDDATE(TODAY(),-1,'M'),16-DAY(TODAY()),'D'),ADDDATE(ADDDATE(TODAY(),-2,'M'),16,'D'))` 如果当前日期大于15号，就返回16天前，否则就返回上个月的16天前`2022-03-21`
13. `IF(DAY(TODAY())>=15,DATE(year(ADDDATE(TODAY(),-1,'M')),month(ADDDATE(TODAY(),-1,'M')),'16'),DATE(year(ADDDATE(TODAY(),-2,'M')),month(ADDDATE(TODAY(),-2,'M')),'16'))` 如果当前日期大于15号，就返回上个月16号，否则就返回上上个月的16号`2022-03-16`
14. `ADDDATE(TODAY(),-(WEEKDAY(TODAY())-1),'d')` 返回当前日期所在周的第一天`2022-05-02`
15. `ADDDATE(TODAY(),7-WEEKDAY(TODAY()),'d')` 返回当前日期所在周的最后一天`2022-05-08`
16. `ADDDATE(TODAY(),-(DAY()-1),'d')`返回当前日期所在月的第一天`2022-05-01`
17. `ADDDATE([门店销售明细表].[销售日期],1,'y')` 返回销售日期的后一年`20191215`
