使用 CTE 从 Sqlite 上的字段生成日期



我需要在 sqlite 上复制 PostgreSQL 的 generate_series() 函数。我有一个表格,我需要根据 2 个字段计算未来的付款:

Date      Period
----------------
1-1-2000  60
1-2-2000  40
1-3-2000  50
因此,从

第一行开始,我需要从 1-1-2000 开始构建 60 个日期。

我读了
如何生成两个日期之间的所有日期

并发现sqlite有CTE!但无法弄清楚如何构建查询。我找到的示例具有硬编码的值。

首先,您应该避免提供的日期格式。使用受支持的之一(检查SQLite日期和时间函数)。

CREATE TABLE source_table (Date, Period);
INSERT INTO source_table VALUES("2000-01-01",60),("2000-02-01",40),("2000-03-01",50);
WITH dates AS (
    SELECT * FROM source_table
    UNION -- use UNION ALL if repeated dates are desired
    SELECT DATE(JULIANDAY(Date)+1), Period-1 FROM dates WHERE Period>0
) SELECT Date FROM dates ORDER BY Date;

最新更新