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

编写SQL查询:基于Employee_info表生成大于SYSDATE的递增日期

生成逐年累加日期序列的SQL查询方案

针对需求:从Employee_info表的每个员工原始日期开始,每次累加365天生成日期,直到日期超过当前系统日期,最终输出员工ID(id)和对应的序列日期(future_date),以下是主流数据库的实现代码:

Oracle 实现

Oracle支持递归CTE来生成连续日期序列,结合SYSDATE获取当前系统日期:

WITH date_series AS (
    -- 初始查询:获取每个员工的原始日期并转换为日期类型
    SELECT 
        employee_id AS id,
        TO_DATE(date, 'DD-MM-YYYY') AS future_date
    FROM Employee_info
    UNION ALL
    -- 递归部分:逐年累加365天,直到超过当前日期停止
    SELECT 
        id,
        future_date + 365
    FROM date_series
    WHERE future_date + 365 <= SYSDATE
)
-- 输出结果并按员工ID、日期排序
SELECT id, future_date
FROM date_series
ORDER BY id, future_date;

关键说明

  • TO_DATE(date, 'DD-MM-YYYY'):将表中存储的DD-MM-YYYY格式字符串转换为Oracle日期类型,确保日期运算有效。
  • 递归终止条件:当累加365天后的日期超过SYSDATE时,停止递归,避免生成无效日期。

MySQL 实现(8.0+版本)

MySQL 8.0及以上支持递归CTE,使用CURDATE()获取当前日期:

WITH RECURSIVE date_series AS (
    SELECT 
        employee_id AS id,
        STR_TO_DATE(`date`, '%d-%m-%Y') AS future_date
    FROM Employee_info
    UNION ALL
    SELECT 
        id,
        DATE_ADD(future_date, INTERVAL 365 DAY)
    FROM date_series
    WHERE DATE_ADD(future_date, INTERVAL 365 DAY) <= CURDATE()
)
SELECT id, future_date
FROM date_series
ORDER BY id, future_date;

关键说明

  • STR_TO_DATE(date, '%d-%m-%Y'):匹配表中日-月-年格式的字符串,转换为MySQL日期类型。
  • DATE_ADD函数用于实现日期累加操作,终止条件对比CURDATE()。

PostgreSQL 实现

PostgreSQL通过递归CTE和日期区间运算实现:

WITH RECURSIVE date_series AS (
    SELECT 
        employee_id AS id,
        TO_DATE(date, 'DD-MM-YYYY') AS future_date
    FROM Employee_info
    UNION ALL
    SELECT 
        id,
        future_date + INTERVAL '365 days'
    FROM date_series
    WHERE future_date + INTERVAL '365 days' <= CURRENT_DATE
)
-- 将interval类型转换为date类型输出
SELECT id, future_date::DATE
FROM date_series
ORDER BY id, future_date;

关键说明

  • 使用+ INTERVAL '365 days'完成日期累加,终止条件对比CURRENT_DATE。
  • 最终将结果转换为DATE类型,保证输出格式符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:05:22