mysql 生成连续日期及变量赋值

 更新时间:2022年03月20日 14:40:23   作者:殷殷殷先森丶  
这篇文章主要介绍了mysql 生成连续日期及变量赋值的相关资料,分享内容及代码详细,具有一的参考价值,需要的小伙伴可以参考一下

1、生产连续日期

说明:主要作用于一些统计数据,来根据时间顺序进行显示;
假如数据库数据有隔天数据,偏偏统计又需要每天的都显示,即便是0,那就要生成一个时间表,来使用;

查询数据库数据:

SELECT
        DATE_FORMAT( create_time, '%Y-%m-%d' ) AS date,
        COUNT(1) AS numb
FROM
    qc_task 
    WHERE
    create_time>= DATE_SUB(CURDATE(),INTERVAL 1 MONTH) and
    department_id IN ( SELECT id FROM `vigilante_jinan`.`qc_department` WHERE `area_code` = (@dep_BH) AND `status` = '1' AND dept_level >= (@dep_DJ)) 
    GROUP BY DATE_FORMAT( create_time, '%Y-%m-%d' )

隔天时出数据:

这样是不是就不好看了,如果非要说加个order by 1 desc 排一下,也可以…
但是就算排出来,时间也是不连贯的;

生成最近7天的日期:

// 方法笨,但还是有效的
select DATE_FORMAT(SUBDATE(NOW(), interval (timeList.sj*1460) MINUTE),'%Y-%m-%d') as 'datetime' from 
 (SELECT @num:=@num+1 as sj from 
            (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7) t, 
           -- (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7) t1,  -- 假如嫌弃生成的少,打来这个就行
            (SELECT @num:=0) y) as timeList

生成的时间:

生成后使用:

-- 生成后左右链接即可,但主表要为时间表
SELECT f.datetime, t.numb FROM 
(SELECT
        DATE_FORMAT( create_time, '%Y-%m-%d' ) AS date,
        COUNT(1) AS numb
FROM
    qc_task 
    WHERE
    create_time>= DATE_SUB(CURDATE(),INTERVAL 1 MONTH) and
    department_id IN ( SELECT id FROM `vigilante_jinan`.`qc_department` WHERE `area_code` = (@dep_BH) AND `status` = '1' AND dept_level >= (@dep_DJ)) 
    GROUP BY DATE_FORMAT( create_time, '%Y-%m-%d' )) t
right join 
(select DATE_FORMAT(SUBDATE(NOW(), interval (timeList.sj*1460) MINUTE),'%Y-%m-%d') as 'datetime' from 
 (SELECT @num:=@num+1 as sj from 
            (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7) t, 
            (SELECT @num:=0) y) as timeList) f  on t.date = f.datetime ;
            

使用后效果:

我这里是数据库没有数据…所以看不到有数量显示

2、变量赋值

看到第一个里面 @符号很多是吗,那些都是变量,如果把查询语句放进去,整个查询语句就显得太臃肿了,会很长…所以有些东西可以拆分出去;

比如在查询数据库语句中的:

来看下他们的真面目:

#  查询部门区域编号
SELECT @dep_BH:=(SELECT area_code FROM qc_department WHERE dept_name = "历下区");
#  查询部门等级
SELECT @dep_DJ:=(SELECT dept_level FROM qc_department WHERE dept_name = "历下区");

到此这篇关于mysql 生成连续日期及变量赋值的文章就介绍到这了,更多相关mysql 连续日期与变量赋值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Hadoop集群环境中为MySQL安装配置Sqoop的教程

    在Hadoop集群环境中为MySQL安装配置Sqoop的教程

    这篇文章主要介绍了在Hadoop集群环境中为MySQL安装配置Sqoop的教程,Sqoop一般被用于数据库软件之间的数据迁移,需要的朋友可以参考下
    2015-12-12
  • SQL实现LeetCode(185.系里前三高薪水)

    SQL实现LeetCode(185.系里前三高薪水)

    这篇文章主要介绍了SQL实现LeetCode(185.系里前三高薪水),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • 一篇文章带你了解MySQL之undo日志

    一篇文章带你了解MySQL之undo日志

    Undo日志也叫做回滚日志,是MySQL数据库当中一种重要的日志,用于记录更新操作之前的数据状态,这篇文章主要给大家介绍了关于如何通过一篇文章带你了解MySQL之undo日志的相关资料,需要的朋友可以参考下
    2023-06-06
  • mysql 8.0.18 安装配置图文教程

    mysql 8.0.18 安装配置图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.18 安装配置图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • MySQL的分区表使用场景及示例小结

    MySQL的分区表使用场景及示例小结

    MySQL的分区表功能在某些场景下可以显著提高查询效率,本文主要介绍了MySQL的分区表使用场景及示例小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • 微信昵称带符号导致插入MySQL数据库时出错的解决方案

    微信昵称带符号导致插入MySQL数据库时出错的解决方案

    Mysql的utf8编码最多3个字节,而Emoji表情或者某些特殊字符是4个字节,所以会导致带有表情的昵称插入数据库时出错,下面给大家分享下解决方案,需要的朋友参考下吧
    2016-12-12
  • mysql 无法连接问题的定位和修复过程分享

    mysql 无法连接问题的定位和修复过程分享

    开发的一款网站防护产品中出现了一个客户端上安装后Mysql每隔一段时间就出现问题,这个问题是客户反馈的,所以需要去复现和定位
    2013-03-03
  • MySQL利用frm文件和ibd文件恢复表结构和表数据

    MySQL利用frm文件和ibd文件恢复表结构和表数据

    当MySQL数据库遭遇崩溃或数据丢失时,利用备份的 .frm 和 .ibd 文件恢复数据是一种有效的解决方案,.frm 文件包含表的结构信息,而 .ibd 文件则存储表的实际数据,本文将提供一个详细的步骤指南,演示如何利用这些文件恢复MySQL表数据和表结构,需要的朋友可以参考下
    2024-05-05
  • MySQL子查询的使用详解下篇

    MySQL子查询的使用详解下篇

    子查询是在查询语句里面再嵌套一个查询,这是因为我们在提取数据的时候有很多不知道的数据产生了依赖关系。本文为大家总结了一下MySQL数据库子查询语法规则,感兴趣的可以了解一下
    2022-08-08
  • mysql 5.7.13 安装配置笔记(Mac os)

    mysql 5.7.13 安装配置笔记(Mac os)

    这篇文章主要为大家详细介绍了Mac os下mysql 5.7.13 安装配置方法教程,感兴趣的小伙伴们可以参考一下
    2016-06-06

最新评论