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 num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);

DROP TABLE calendar;
CREATE TABLE if not exists calendar(datelist date,datehour datetime);

INSERT INTO calendar(datelist) SELECT adddate( ( -- 这里的起始日期,你可以换成当前日期
DATE_FORMAT("2018-11-10", ‘%Y-%m-%d‘) ), numlist.id ) AS `date`
FROM
( SELECT n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000+ n10000.i * 10000 AS id
FROM num n1 CROSS JOIN num AS n10 CROSS JOIN num AS n100 CROSS JOIN num AS n1000 CROSS JOIN num AS n10000
) AS numlist; 

* 每一个小时为一个分段 生成如下辅助表


INSERT INTO calendar(datehour)
SELECT
DATE_ADD((DATE_FORMAT("2018-11-10", ‘%Y-%m-%d‘)),INTERVAL numlist.id HOUR) AS `date`
FROM (
SELECT n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000+ n10000.i * 10000 AS id
FROM num n1
CROSS JOIN num AS n10
CROSS JOIN num AS n100
CROSS JOIN num AS n1000
CROSS JOIN num AS n10000 ) AS numlist; 
 

原文地址:https://www.cnblogs.com/lancelee98/p/10006710.html

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

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

mysql 生成日期维表

第一步,创建函数 f_dim_day create procedure f_dim_day(in start_date VARCHAR(20),in date_count int) begin declare i int; set i=0; DELETE from dim_day; while i<date_count do INSERT into dim_day (DAY_ID,DAY_SHORT_DESC,DAY_LONG_DESC,WEEK_ID,WEEK_LONG_DESC,MONTH_

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

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), (

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

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

mysql的分区和分表

分区 分区就是把一个数据表的文件和索引分散存储在不同的物理文件中. mysql支持的分区类型包括Range.List.Hash.Key,其中Range比较常用: RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区. LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择. HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算.这个函数可以包含MySQL 中有效的.产生非负整数

MySQL - 建库、建表、查询

本章通过演示如何使用mysql客户程序创造和使用一个简单的数据库,提供一个MySQL的入门教程.mysql(有时称为“终端监视器”或只是“监视”)是一个交互式程序,允许你连接一个MySQL服务器,运行查询并察看结果.mysql可以用于批模式:你预先把查询放在一个文件中,然后告诉mysql执行文件的内容.使用mysql的两个方法都在这里涉及. 为了看清由mysql提供的一个选择项目表了,用--help选项调用它: shell> mysql --help 本章假定mysql已经被安装在你的机器上,并

Mysql DBA 高级运维学习笔记-mysql建表语句及表知识

9.9 表操作 9.9.1以默认字符集建库 以默认格式的为例,指定字符集建库 [email protected] 07:0205->create database wwn; Query OK, 1 row affected (0.00 sec) [email protected] 07:0339->SHOW CREATE DATABASE wwn\G; *************************** 1. row *************************** Database

Mysql错误编码和解释表

Mysql错误编码和解释表1.错误消息的组成 一共由三部分组成 mysql数字错误代码,这个数字的mysql的特定值,不可以移植到其它数据库系统. 一个五位长度的sqlstate值,这些值取自ANSI SQL和ODBC,并且更加标准化.并不是所有的MySQL错误号都具有相应的SQLSTATE值.在这些情况下,使用'HY000' (一般错误). 错误的消息描述 2.一些额外的说明 如果需要错误检查,请使用错误代码,而不是错误消息. 如果数据库管理员更改语言设置,则会影响错误消息的语言. 错误代码在