MySQL 如何生成日期表

在开发过程中,经常会遇到统计问题,通常交易信息都不是连续的,此时,统计出来的数据都是不连续的,所以提前生成一个时期表,当没有交易数据的时候填充0,就可以了,下面是生成日期表的步骤

1、创建一个num表,用来存储数字0~9

1 CREATE TABLE num (i int);

结果如下:

2、在num表中生成0~9

1 -- CREATE TABLE num (i int);
2 INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);

结果如下:

3、生成一个存储日期的表,datalist是字段名

-- CREATE TABLE num (i int);
-- INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
CREATE TABLE  if not exists calendar(datelist date); 

结果如下:

4、生成并插入日期数据

 1 -- CREATE TABLE num (i int);
 2 -- INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
 3 -- CREATE TABLE  if not exists calendar(datelist date);
 4 INSERT INTO calendar(datelist) SELECT
 5     adddate(
 6         (   -- 这里的起始日期,你可以换成当前日期
 7             DATE_FORMAT("2016-1-1", ‘%Y-%m-%d‘)
 8         ),
 9         numlist.id
10     ) AS `date`
11 FROM
12     (
13         SELECT
14             n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000+ n10000.i * 10000 AS id
15         FROM
16             num n1
17         CROSS JOIN num AS n10
18         CROSS JOIN num AS n100
19         CROSS JOIN num AS n1000
20         CROSS JOIN num AS n10000
21     ) AS numlist;

结果所示:

5、最后再添加主键即可

 1 -- CREATE TABLE num (i int);
 2 -- INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
 3 -- CREATE TABLE  if not exists calendar(datelist date);
 4 -- INSERT INTO calendar(datelist) SELECT
 5 --     adddate(
 6 --         (   -- 这里的起始日期,你可以换成当前日期
 7 --             DATE_FORMAT("2016-1-1", ‘%Y-%m-%d‘)
 8 --         ),
 9 --         numlist.id
10 --     ) AS `date`
11 -- FROM
12 --     (
13 --         SELECT
14 --             n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000+ n10000.i * 10000 AS id
15 --         FROM
16 --             num n1
17 --         CROSS JOIN num AS n10
18 --         CROSS JOIN num AS n100
19 --         CROSS JOIN num AS n1000
20 --         CROSS JOIN num AS n10000
21 --     ) AS numlist;
22 ALTER TABLE `calendar`
23 ADD COLUMN `id`  int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘主键‘ FIRST ,
24 ADD PRIMARY KEY (`id`);

最终结果如图所示:

然后再去统计数据的时候关联该日期表就行了

原文地址:https://www.cnblogs.com/apolloren/p/12247348.html

时间: 2024-10-26 10:40:43

MySQL 如何生成日期表的相关文章

MySQL 生成日期表

1.创建一个num表,用来存储数字0~9 CREATE TABLE num (i int); 2.在num表中生成0~9 INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9); 3.生成一个存储日期的表,datalist是字段名 CREATE TABLE if not exists calendar(datelist date); 4.生成并插入日期数据 INSERT INTO calendar(d

PowerBI 应用时间智能(生成日期表)

简介 Power BI Desktop -是一款由微软发布的自助式商业智能工具,功能强大.易于使用.其中还可以通过微软云连多个数据源并且使用数据源来创建可视化表盘. 但是几乎所有的BI都需要展示如何随时间改变KPI.因此我将会介绍一个帮助我们使用事件元素来分析数据的关键功能.在PowerBI Desktop 中叫做“time intelligence”.应用这种时域分析法能是商业智能中基本的数据表现形式.毕竟公司想要知道的无非就是今年的业绩相比去年如何以及取得了何种进步. “Time intel

【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL(MySQL数据库表结构导出器). 介绍: DBExportDoc V1.0 For MySQL是一款利用office特性VBA开发的小工具,利用此工具可以将本机MySQL上任意数据库.任意表的数据结构导出.但是它不是一款你安装是一路next到finish就可以立刻使用的. 要注意的有两点: 首先,你

MySQL WorkBench6.1生成各表关系图

MySQL WorkBench生成各表关系图网上教程很多,但我下的6.1版就死活找不到,不过最终还是找到了.首页的这里 MySQL WorkBench6.1生成各表关系图

hibernate+mysql 自动生成数据库问题

Hibernate Entity类 表名注解大写时,在windows下mysql自动生成的表都为小写(不区分大小写),在linux下mysql自动生成区分大小写.导致数据库问题. 原因(window下mysql不区分大小写,hibernate生成时全部生成小写,linux下生成时,按照注解大小写生成) 1 package com.pera.report.designer.data; 2 3 import java.sql.Clob; 4 5 import javax.persistence.Ba

mysql生成日期的辅助表

为了解决mysql按日期分组查询统计的时候,没有数据补0.可以生成连续的时间表格来辅助查询 CREATE TABLE num (i int);-- 创建一个表用来储存0-9的数字INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);-- 生成0-9的数字,方便以后计算时间 * 生成日期 CREATE TABLE num (i int);-- 创建一个表用来储存0-9的数字 INSERT INTO n

mysql中生成时间维度表

利用mysql常用日期函数生成时间维度表,效率最高,最简单,无需其他的一些工具支持.生成结果示例如下图: # time span SET @d0 = "2012-01-01"; SET @d1 = "2012-12-31"; SET @date = date_sub(@d0, interval 1 day); # set up the time dimension table DROP TABLE IF EXISTS time_dimension; CREATE T

PowerDesigner生成数据库表和逆向生成表结构(MySQL数据库)

一.Download Connector/ODBC下载ODBC驱动,地址:https://dev.mysql.com/downloads/connector/odbc/, 需要注意:PowerDesigner安装的多少位就下载多少位的,一般是32位,建议下载.msi文件直接安装. 二.安装完成后点击powerdesigner的Database--->Configure Connections...--->添加数据源配置,如下图: 三.PDM模型生成数据库sql文件,点击powerdesigne

Mysql数据库理论基础之四 --- 表和索引的管理

一.简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1.是一种数据库管理系统 2.是一种关联数据库管理系统 3.是一种开放源码软件,且有大量可用的共享MySQL软件 4.MySQL数据库服务器具有快速.可靠和易于使用的特点 5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中 二.MySQL 存储引擎,也称表类型 2.1. 单字段:    PRIMARY KEY 主键 UNIQUE KEY 唯一键 2.2 单或者多字段:    PRIMARY KE