为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:win11
【CPU】:
【问题描述】*:递归生成两个时间点中间的日期,抛出语法分析错误
WITH RECURSIVE date_cte AS (
SELECT
CAST('2023-03-01' AS DATE) AS start_date,
CAST('2023-03-31' AS DATE) AS end_date
UNION ALL
SELECT
--DATE_ADD(start_date, INTERVAL 1 DAY)
DATEADD(DAY, 1, start_date)
FROM
date_cte
WHERE
start_date < end_date
)
SELECT
*
FROM
date_cte
抛出错误:SQL 错误 [42000]: 第 1 行, 第 15 列[date_cte]附近出现错误:
语法分析出错
已解决:
WITH date_cte(日期)
AS (
SELECT
CAST('2023-03-01' AS DATE) AS 日期
UNION ALL
SELECT
DATEADD(DAY, 1, 日期)
FROM
date_cte
WHERE
日期 < CAST('2023-03-31' AS DATE)
)
SELECT
*
FROM
date_cte
变成这个:WITH date_cte AS (
SELECT
CAST('2023-03-01' AS DATE) AS start_date,
CAST('2023-03-31' AS DATE) AS end_date
UNION ALL
SELECT
--DATE_ADD(start_date, INTERVAL 1 DAY)
DATEADD(DAY, 1, start_date)
FROM
date_cte
WHERE
start_date < end_date
)
SELECT
*
FROM
date_cte
抛出错误:SQL 错误 [22000]: 第17 行附近出现错误:
递归 WITH 子句必须具有列别名列表