MySQL生成日期维度表

1、通过存储过程生成

sql 复制代码
DELIMITER $$
CREATE PROCEDURE dateDim(startDate DATE, endDate DATE)  
BEGIN  
    DECLARE currentDate DATE;  
    SET currentDate = startDate;  
  
    WHILE currentDate <= endDate DO  
        INSERT INTO sys_calendar (stats_day) VALUES (currentDate);  
        SET currentDate = DATE_ADD(currentDate, INTERVAL 1 DAY);  
    END WHILE;  
END $$
DELIMITER ;  
  

CALL dateDim('2022-01-01', '2030-12-31');

2、通过递归的公用表表达式生成

sql 复制代码
WITH RECURSIVE date_series AS (  
  SELECT '2023-01-01' AS date_value  
  UNION ALL  
  SELECT DATE_ADD(date_value, INTERVAL 1 DAY)  
  FROM date_series  
  WHERE date_value < '2023-12-31'  
)  
INSERT INTO date_dim (date_value)  
SELECT date_value FROM date_series;
相关推荐
AAA@峥3 分钟前
CentOS7 源码编译安装 MySQL5.7|SQL 基础操作 + 备份恢复完整实战
运维·数据库·sql·centos
xixingzhe25 分钟前
spring ai简单使用skills
数据库·人工智能·spring
Fu20672137 分钟前
数据库第三次作业
数据库
AI多Agent协作实战派1 小时前
AI多Agent协作系统实战(二十三):Agent读HEARTBEAT.md不读AGENTS.md——openclaw的文件加载之谜
前端·数据库·人工智能·uni-app
一嘴一个橘子1 小时前
MysqL 哪些情况适合创建索引
mysql
jun_bai2 小时前
postgresql数据库免安装版安装到windows系统
数据库·postgresql
weixin_538601972 小时前
智能体测开Day33
数据库·oracle
时间的拾荒人2 小时前
MySQL C语言连接 - 从入门到实战
android·c语言·mysql
番茄炒鸡蛋加糖2 小时前
Redis--Lua 脚本原子性与滑动窗口限流
数据库·redis·lua
瀚高PG实验室2 小时前
DELETE 条件字段缺少索引导致 SuperSync 同步严重延迟
数据库·postgresql·瀚高数据库