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;
相关推荐
开开心心_Every1 分钟前
优化C盘存储:自定义软件文档保存路径工具
java·网络·数据库·typescript·word·asp.net·excel
醉舞经阁半卷书19 分钟前
Etcd服务端参数详解
数据库·etcd
gugugu.13 分钟前
Redis持久化机制详解(一):RDB全解析
数据库·redis·缓存
暗之星瞳26 分钟前
mysql表的链接
大数据·数据库·mysql
陌路2029 分钟前
redis持久化篇AOF与RDB详解
数据库·redis·缓存
@老蝴36 分钟前
MySQL - 索引
数据库·mysql
tgethe1 小时前
MySQL 进阶攻略
数据库·mysql
亮子AI1 小时前
【node.js MySQL】node.js 如何连接 MySQL?
数据库·mysql·node.js
程序员根根1 小时前
Web 开发必学:Java 数据库操作从 JDBC 到 MyBatis 的进阶之路
数据库·后端
全栈工程师修炼指南1 小时前
Nginx | HTTPS 加密传输:Nginx 反向代理与上游服务 SSL 双向认证实践
网络·数据库·nginx·https·ssl