doris中sql生成连续日期(年 月)不需要建表
时间: 2023-10-07 08:08:35 浏览: 422
sql server使用公用表表达式CTE通过递归方式编写通用函数自动生成连续数字和日期
DorisDB 中可以使用 `WITH` 子句来生成一个虚拟的日期表,然后通过 `JOIN` 操作将其与其他表关联。以下是一个生成指定年份内所有月份的查询示例:
```sql
WITH RECURSIVE months(dt) AS (
SELECT CAST('2022-01-01' AS DATE)
UNION ALL
SELECT ADDDATE(dt, INTERVAL 1 MONTH)
FROM months
WHERE dt < '2022-12-01'
)
SELECT DATE_FORMAT(dt, '%Y-%m') AS month
FROM months;
```
这个查询使用递归方式生成一个包含指定年份内所有月份的日期表,然后使用 `DATE_FORMAT` 函数将日期格式化为 `yyyy-MM` 的形式,从而生成所需的连续日期。你可以根据需要修改起始日期和结束日期来生成不同的日期范围。
类似地,你也可以使用类似的方式生成所有年份:
```sql
WITH RECURSIVE years(dt) AS (
SELECT CAST('2010-01-01' AS DATE)
UNION ALL
SELECT ADDDATE(dt, INTERVAL 1 YEAR)
FROM years
WHERE dt < '2021-01-01'
)
SELECT YEAR(dt) AS year
FROM years;
```
这个查询使用递归方式生成一个包含指定年份内所有年份的日期表,然后使用 `YEAR` 函数提取年份,从而生成所需的连续年份。
阅读全文