MySQL生成日期維度表的sql語句
MySQL生成日期維度表
1、通過存儲(chǔ)過程生成
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQLyog錯(cuò)誤號(hào)碼MySQL?plugin?caching_sha2_password?could?not?
這篇文章主要介紹了SQLyog錯(cuò)誤號(hào)碼?plugin?caching_sha2_password?could?not?be?loaded的解決方法,需要的朋友可以參考下2023-06-06django2.2版本連接mysql數(shù)據(jù)庫的方法
這篇文章主要介紹了django2.2版本如何連接mysql數(shù)據(jù)庫,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10淺談Mysql?tinyint(1)與tinyint(4)的區(qū)別
本文主要介紹了淺談Mysql?tinyint(1)與tinyint(4)的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03MySQL創(chuàng)建數(shù)據(jù)表時(shí)設(shè)定引擎MyISAM/InnoDB操作
這篇文章主要介紹了MySQL創(chuàng)建數(shù)據(jù)表時(shí)設(shè)定引擎MyISAM/InnoDB操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08在Windows系統(tǒng)上使用壓縮歸檔文件安裝MySQL的步驟
這篇文章主要介紹了在Windows系統(tǒng)上使用壓縮歸檔文件安裝MySQL的步驟,非常不錯(cuò),具有一定的參考借鑒加載,需要的朋友可以參考下2018-06-06