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;
相关推荐
Mors.12 小时前
dbeaver工具连接inceptor星环数据库
数据库
TG_yunshuguoji13 小时前
阿里云国际代理:阿里云的云数据库是什么?
服务器·数据库·安全·阿里云·云计算
程序猿 董班长14 小时前
springboot配置多数据源(mysql、hive)
hive·spring boot·mysql
huazhixuthink14 小时前
PostgreSQL三种关闭方式的区别
数据库·postgresql
阿里小阿希19 小时前
Vue3 + Element Plus 项目中日期时间处理的最佳实践与数据库设计规范
数据库·设计规范
且行志悠20 小时前
Mysql的使用
mysql
白鹭20 小时前
MySQL源码部署(rhel7)
数据库·mysql
666和77720 小时前
Struts2 工作总结
java·数据库
还听珊瑚海吗20 小时前
SpringMVC(一)
数据库