MySQL生成日期維度表的sql語句
更新時(shí)間:2024年07月03日 14:43:39 作者:ronshi
這篇文章主要介紹了MySQL生成日期維度表的sql語句,通過存儲過程生成,其次是通過遞歸的公用表表達(dá)式生成,需要的朋友可以參考下
MySQL生成日期維度表
1、通過存儲過程生成
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、通過遞歸的公用表表達(dá)式生成
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;
補(bǔ)充:Mysql 快速生成日期時(shí)間維度表
Mysql 快速生成日期時(shí)間維度表
創(chuàng)建表結(jié)構(gòu)
CREATE TABLE `dim_date` ( `id` int(11) NOT NULL COMMENT '日期鍵 20000101', `date` date DEFAULT NULL COMMENT '日期 2000-01-01', `year` smallint(6) DEFAULT NULL COMMENT '年 2000', `month` smallint(6) DEFAULT NULL COMMENT '月 01', `day` smallint(6) DEFAULT NULL COMMENT '日 01', `quarter` smallint(6) DEFAULT NULL COMMENT '當(dāng)年所屬季度', `year_of_week` smallint(6) DEFAULT NULL COMMENT '當(dāng)前周所屬年份', `week` smallint(6) DEFAULT NULL COMMENT '當(dāng)年所屬周', `day_of_week` smallint(6) DEFAULT NULL COMMENT '星期幾', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
生產(chǎn)數(shù)據(jù)
SET @d0 = '2000-01-01'; SET @d1 = '2100-12-31'; SET @date = DATE_SUB( @d0, INTERVAL 1 DAY ); INSERT INTO `dim_date`(`date`, `id`, `year`, `month`, `day`, `quarter`, `year_of_week`, `week`, `day_of_week`) SELECT @date := DATE_ADD( @date, INTERVAL 1 DAY ) AS DATE, DATE_FORMAT( @date, '%Y%m%d' ) AS id, YEAR ( @date ) AS Y, MONTH ( @date ) AS m, DAY ( @date ) AS d, QUARTER ( @date ) AS q, DATE_FORMAT( @date, '%x' ) AS yw, WEEK ( @date, 3 ) AS w, WEEKDAY( @date ) + 1 AS wd FROM [某張行數(shù)比日期差大的表] WHERE DATE_ADD( @date, INTERVAL 1 DAY ) <= @d1 ORDER BY DATE;
到此這篇關(guān)于MySQL生成日期維度表的文章就介紹到這了,更多相關(guān)MySQL日期維度表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL實(shí)現(xiàn)多源復(fù)制的示例代碼
MySQL的多源復(fù)制允許一個(gè)從服務(wù)器從多個(gè)主服務(wù)器復(fù)制數(shù)據(jù),這在需要將多個(gè)數(shù)據(jù)源匯聚到一個(gè)數(shù)據(jù)庫實(shí)例時(shí)非常有用,下面就來詳細(xì)的介紹一下,感興趣的可以了解一下2025-08-08
SQL實(shí)現(xiàn)LeetCode(184.系里最高薪水)
這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(184.系里最高薪水),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
2021-08-08
SQL中JOIN操作的條件使用總結(jié)與實(shí)踐
在SQL查詢中,JOIN操作是多表關(guān)聯(lián)的核心工具,本文將從原理,場景和最佳實(shí)踐三個(gè)方面總結(jié)JOIN條件的使用規(guī)則,希望可以幫助開發(fā)者精準(zhǔn)控制查詢邏輯
2025-06-06
mysql數(shù)據(jù)庫如何實(shí)現(xiàn)億級數(shù)據(jù)快速清理
這篇文章主要介紹了mysql數(shù)據(jù)庫實(shí)現(xiàn)億級數(shù)據(jù)快速清理的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
2018-04-04 
