You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pervasive SQL中无需存储过程获取未来14天的日期列表

Pervasive SQL无需存储过程生成未来14天日期列表方案

Pervasive SQL确实不支持递归CTE和普通查询内的循环逻辑,针对14天这种短序列场景,可以通过硬编码数字序列的方式实现需求,无需调用存储过程。

1. 单独生成未来14天日期列表

如果你需要的是从当日开始计算的14天日期,可直接使用以下查询:

SELECT DATEADD(day, nums.n, CURDATE()) AS xDate
FROM (
    SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL
    SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
    SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL
    SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL
    SELECT 12 UNION ALL SELECT 13
) nums;

如果需要从次日开始计算14天,将DATEADD(day, nums.n, CURDATE())改为DATEADD(day, nums.n + 1, CURDATE())即可。

2. 生成员工-日期对应列表

和员工表做交叉连接即可得到所有员工未来14天的对应记录:

SELECT e.员工ID, e.员工姓名, d.xDate
FROM 员工表 e
CROSS JOIN (
    SELECT DATEADD(day, nums.n, CURDATE()) AS xDate
    FROM (
        SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL
        SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
        SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL
        SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL
        SELECT 12 UNION ALL SELECT 13
    ) nums
) d;

扩展说明

如果后续需要生成更长的日期序列,有两种优化方案:

  • 继续在子查询中追加UNION ALL SELECT 数字的条目,最多可根据需求扩展到你需要的天数
  • 如果数据库内存在任意行数足够的带自增主键的表,可直接复用该表的主键生成数字序列,避免硬编码,示例如下(假设存在主键为id的业务表,且数据量大于你需要的天数):
SELECT DATEADD(day, id - 1, CURDATE()) AS xDate
FROM 业务表
WHERE id <= 14;

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:06:01