如何在sql中实现日期自动补全

  介绍

这篇文章将为大家详细讲解有关如何在sql中实现日期自动补全,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

最近在开发统计访问功能时,如果数据表里缺少某一天的数据,就会导致那天的记录丢失,但显示的时候还是需要那天的数据,没有的话,可以默认为0,大概想到了两种解决办法:

1。将数据读出来后,在程序循环添加缺少的数据,但是这对于统计数据范围可变的需求,可能统计7天、30天、60天,通过程序来补全数据就显得有点麻烦了。

2。首先生成某个范围的日历表数据,再通过这个日历表连接查询需要统计数据表的数据,没有的话,默认为0;这样就可以得出这个范围内完整的数据了,所以这种方案,更适合这种需求的变化。

现在通过如下sql语句生成日历表:

CREATE TABLE num (INT);——创建一个表用来储存0 - 9的数字   插入num (i)值(0)、(1),(2),(3),(4),(5)、(6)、(7)、(8)、(9);——生成0 - 9的数字,方便以后计算时间   如果不存在创建表日历日期(日期);——生成一个存储日期的表,日期是字段名   ——这里是生成并插入日期数据   插入日历(日期)选择   ADDDATE (   (——起始日期,从2017-1-1开始   DATE_FORMAT (“2017 - 1 - 1 -“, & # 39; Y - % - % d % # 39;)   ),   numlist.id   “日期”   从   (   选择   n1。我+ n10。我* 10 +其他。我* 100 + n1000。我* 1000 id   从   num n1   交叉连接num n10   交叉连接num n100   交叉连接num n1000   )numlist;

执行sql后生成1 w条记录,从2017-01-01 ~ 2017-01-01,这些数据已经足够用很久了;也可以通过修改相对应的条件,生成更多的数据,这里就不详细说明了,根据需求修改就行。

执行如下sql测试:

选择计数(u.id)作为num, c。日期从日历c   离开加入用户u alt="如何在sql中实现日期自动补全”>

如何在sql中实现日期自动补全