iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >如何在sql中实现日期自动补全
  • 230
分享到

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

2024-04-02 19:04:59 230人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关如何在sql中实现日期自动补全,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。最近在开发统计访问功能时,如果数据表里缺少某一天的数

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

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

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

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

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

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  IF NOT EXISTS calendar(DATE DATE); -- 生成一个存储日期的表,date是字段名
-- 这里是生成并插入日期数据
INSERT INTO calendar(DATE) SELECT
    ADDDATE(
        (   -- 起始日期,从2017-1-1开始
            DATE_FORMAT("2017-1-1", '%Y-%m-%d')
        ),
        numlist.id
    ) AS `date`
FROM
    (
        SELECT
            n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000 AS id
        FROM
            num n1
        CROSS JOIN num AS n10
        CROSS JOIN num AS n100
        CROSS JOIN num AS n1000
    ) AS numlist;

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

执行如下 sql 测试

SELECT COUNT(u.id) AS num, c.date FROM calendar AS c
LEFT JOIN users AS u ON c.date = u.`created_at`
WHERE c.date BETWEEN '2017-05-01' AND '2017-05-07'
GROUP BY c.`date`
ORDER BY c.`date`

得出如下结果:

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

关于如何在sql中实现日期自动补全就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: 如何在sql中实现日期自动补全

本文链接: https://www.lsjlt.com/news/41322.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在sql中实现日期自动补全
    这篇文章将为大家详细讲解有关如何在sql中实现日期自动补全,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。最近在开发统计访问功能时,如果数据表里缺少某一天的数...
    99+
    2022-10-18
  • 利用Redis如何实现自动补全功能
    忘了redis从哪个版本开启,能够根据输入的部分命令前缀给出提示,即自动补全。接下来笔者介绍基于redis实现这个很酷的功能。 about sorted set 假设结果中有mara,marabel,ma...
    99+
    2022-10-18
  • 怎么在php中使用phpstorm实现自动补全代码
    怎么在php中使用phpstorm实现自动补全代码?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。php的框架有哪些php的框架:1、Laravel,Laravel是一款免费...
    99+
    2023-06-14
  • Jupyter Notebook如何实现代码格式自动补全
    这篇文章将为大家详细讲解有关Jupyter Notebook如何实现代码格式自动补全,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码格式自动补全有时jupyter no...
    99+
    2022-10-19
  • ubuntu如何实现自动补齐
    ubuntu实现自动补齐的方法:以root权限利用vi编辑器打开/etc/bash.bashrc文件,命令:sudo vi /etc/bash.bashrc找到/etc/bash.bashrc文件中的下列代码进行修改。#...
    99+
    2022-10-08
  • 如何实现自动清除日期目录shell脚本
    小编给大家分享一下如何实现自动清除日期目录shell脚本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实现自动清除日期目录shell脚本实例代码很多时候备份通常会...
    99+
    2023-06-09
  • php如何实现数字自动补零
    今天小编给大家分享一下php如何实现数字自动补零的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、使用sprintf函数在p...
    99+
    2023-07-05
  • vue中怎么实现一个自动补全的输入框
    本篇文章给大家分享的是有关vue中怎么实现一个自动补全的输入框,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。显示div将内容撑开,改变其他组件...
    99+
    2022-10-19
  • 怎么在Java8中实现一个线程安全日期类
    这期内容当中小编将会给大家带来有关怎么在Java8中实现一个线程安全日期类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。LocalDateTimeJava8新特性之一,新增日期类。在项目开发过程中经常遇到...
    99+
    2023-06-14
  • php 如何实现日期转中文
    这篇文章给大家分享的是有关php 如何实现日期转中文的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php实现日期转中文的方法:1、创建一个PHP示例文件;2、通过“private function toDateC...
    99+
    2023-06-22
  • 如何实现iview日期控件中双向绑定日期格式
    这篇文章将为大家详细讲解有关如何实现iview日期控件中双向绑定日期格式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。日期在双向绑定之后格式为:2017-07-03T16...
    99+
    2022-10-19
  • Redis中如何实现订单自动过期功能
    这篇文章将为大家详细讲解有关Redis中如何实现订单自动过期功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言用户下单后,规定XX分钟后自动设置为“已过期”,不能再发起支付。项目类似此类"过...
    99+
    2023-06-15
  • BIRT中如何根据参数实现动态日期分组
    BIRT中如何根据参数实现动态日期分组,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。BIRT一般擅长处理规则一致的数据,若条件不一致的动态运算在报表中是很难实现...
    99+
    2023-06-03
  • 如何在CentOS和RHEL系统上安装或自动更新安全补丁
    这篇文章主要为大家分析了如何在CentOS和RHEL系统上安装或自动更新安全补丁的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“如何在CentOS和RHEL系...
    99+
    2023-06-28
  • 日期格式化的最佳实践:如何在Java中处理日期格式化
    文章目录 前言一、使用format()方法二、使用注解@JsonFormat三、使用消息转换器1.定义用户类2.重写DateSerializer 方法3.定义对象映射器:4.定义消息转换器5....
    99+
    2023-09-17
    java 开发语言
  • sql server编写通用脚本如何实现获取一年前日期
    这篇文章给大家分享的是有关sql server编写通用脚本如何实现获取一年前日期的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题:  在数据库编程开发中,有时需要获取一年前的日...
    99+
    2022-10-18
  • Redis分布式锁如何自动续期的实现
    目录Redis 实现分布式锁问题自动续期看门狗Redissson tryLock看门狗如何自动续期续期原理Redis 实现分布式锁 指定一个 key 作为锁标记,存入 Re...
    99+
    2022-11-12
  • js中如何实现日期时间格式化
    这篇文章主要为大家展示了“js中如何实现日期时间格式化”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“js中如何实现日期时间格式化”这篇文章吧。js日期时间格式化将日期时间转换为指定格式,如:YY...
    99+
    2023-06-20
  • 如何在Html中实现table数据自动滚动
    这期内容当中小编将会给大家带来有关如何在Html中实现table数据自动滚动,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。html是什么html的全称为超文本标记语言,它是一种标记语言,包含了一系列标签....
    99+
    2023-06-06
  • 如何在 MySQL 的其他列中插入值时自动插入当前日期和时间?
    在 MySQL 中,通过将该列声明为 DEFAULT CURRENT_TIMESTAMP,我们可以在将值插入另一列时自动将当前日期和时间插入到该列中。示例mysql> Create table testing -> ( ...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作