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;
相关推荐
a_zhee1几秒前
[Redis]哨兵机制
数据库·redis·缓存
GodGump1 分钟前
DB-GPT 文档切分报错
数据库·gpt
a未来永远是个未知数14 分钟前
数据库重命名脚本
数据库
java66666888825 分钟前
Java中的内存数据库与缓存技术
java·数据库·缓存
水题检测鸟33 分钟前
ACID及事务隔离级别
数据库
Obsession123437 分钟前
MySQL高可用之 MMM结构
数据库·mysql
进窄门见微光行远路1 小时前
MySQL-核心知识要点
数据库·mysql
wowocpp1 小时前
ubuntu 18 虚拟机安装(1)
mysql
番茄炒西红柿炒蛋1 小时前
秋招Java后端开发冲刺——非关系型数据库篇(Redis)
数据库·redis·nosql
u0104058362 小时前
正则表达式数字匹配技巧与应用场景分析
java·mysql·正则表达式