MYSQL查询近一年 近一月 近一周 今天数据 没有数据返回0 按时间有序返回数据

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MYSQL查询近一年 近一月 近一周 今天数据 没有数据返回0 按时间有序返回数据

MYSQL查询近一年,近一周,今天数据 没有数据返回0


近一年

select count(0) total,date_format(gmt_created,'%Y%m') time
        from application_main
        where is_del!=2
        and DATE_ADD(NOW(),INTERVAL(-12) MONTH) <= gmt_created 
        group by date_format(gmt_created,'%Y%m')
        order by date_format(gmt_created,'%Y%m') desc


此sql运行后会返回近一年有数据的月份 需要配合工具类进行使用 工具类如下


/**
     * 获取近一年 年月时间
     */
    public static List<ApplicationMainDto> getInitMonthMapWithZero2(Integer num) {
        List<ApplicationMainDto> list = new ArrayList<>();
        Calendar c = Calendar.getInstance();
        for (int i = 0; i < num; i++) {
            int k = c.get(Calendar.YEAR);
            int j = c.get(Calendar.MONTH) + 1 - i;
            String date = "";
            if (j >= 1) {
                date = k + (j >= 10 ? "" : "0") + j;
            } else {
                int p = 11 - i;//剩余循环次数
                int m = c.get(Calendar.YEAR) - 1;
                int n = c.get(Calendar.MONTH) + 2 + p;
                date = m + (n >= 10 ? "" : "0") + n;
            }
            ApplicationMainDto applicationMainDto = new ApplicationMainDto();
            applicationMainDto.setTime(date);
            applicationMainDto.setTotal(0.0);
            list.add(applicationMainDto);
        }
        return list;
    }


业务层调用


20210430161254382.png


返回结果:


{
"type":"success",
"data":[
{
"total":23.0,
"count":0.0,
"time":"202104"
},
{
"total":0.0,
"count":0.0,
"time":"202103"
},
{
"total":0.0,
"count":0.0,
"time":"202102"
},
{
"total":0.0,
"count":0.0,
"time":"202101"
},
{
"total":0.0,
"count":0.0,
"time":"202012"
},
{
"total":0.0,
"count":0.0,
"time":"202011"
},
{
"total":0.0,
"count":0.0,
"time":"202010"
},
{
"total":0.0,
"count":0.0,
"time":"202009"
},
{
"total":0.0,
"count":0.0,
"time":"202008"
},
{
"total":0.0,
"count":0.0,
"time":"202007"
},
{
"total":0.0,
"count":0.0,
"time":"202006"
},
{
"total":0.0,
"count":0.0,
"time":"202005"
}
],
"code":null,
"msg":null


近一月


SELECT
        date_add( curdate(), INTERVAL ( cast( help_topic_id AS signed INTEGER ) - 30 ) DAY ) time,
        ifnull( am.count, 0 ) total
        FROM
        mysql.help_topic h
        LEFT JOIN (
        SELECT
        date_format( gmt_created, '%Y-%m-%d' ) time,
        count( 0 ) count
        FROM
        application_main
        WHERE
        is_del = 1
        GROUP BY
        date_format( gmt_created, '%Y-%m-%d' )
        ) am ON date_add( curdate(), INTERVAL ( cast( h.help_topic_id AS signed INTEGER ) - 30 ) DAY ) = am.time
        WHERE
        h.help_topic_id <= DAY (
        last_day(
        curdate()))
        ORDER BY
        h.help_topic_id


返回结果:


20210430161950741.png


近一周


SELECT
        date_add( curdate(), INTERVAL ( cast( help_topic_id AS signed INTEGER ) - 6 ) DAY ) time,
        ifnull( am.count, 0 ) total
        FROM
        mysql.help_topic h
        LEFT JOIN (
        SELECT
        date_format( gmt_created, '%Y-%m-%d' ) time,
        count( 0 ) count
        FROM
        application_main
        WHERE
        is_del = 1
        GROUP BY
        date_format( gmt_created, '%Y-%m-%d' )
        ) am ON date_add( curdate(), INTERVAL ( cast( h.help_topic_id AS signed INTEGER ) - 6 ) DAY ) = am.time
        WHERE
        h.help_topic_id <= 6
        ORDER BY
        h.help_topic_id


返回结果:


近一日


SELECT
  a.HOUR time,
  ifnull( b.count, 0 ) total
FROM
  (
  SELECT
    0 HOUR UNION ALL
  SELECT
    01 HOUR UNION ALL
  SELECT
    02 HOUR UNION ALL
  SELECT
    03 HOUR UNION ALL
  SELECT
    04 HOUR UNION ALL
  SELECT
    05 HOUR UNION ALL
  SELECT
    06 HOUR UNION ALL
  SELECT
    07 HOUR UNION ALL
  SELECT
    08 HOUR UNION ALL
  SELECT
    09 HOUR UNION ALL
  SELECT
    10 HOUR UNION ALL
  SELECT
    11 HOUR UNION ALL
  SELECT
    12 HOUR UNION ALL
  SELECT
    13 HOUR UNION ALL
  SELECT
    14 HOUR UNION ALL
  SELECT
    15 HOUR UNION ALL
  SELECT
    16 HOUR UNION ALL
  SELECT
    17 HOUR UNION ALL
  SELECT
    18 HOUR UNION ALL
  SELECT
    19 HOUR UNION ALL
  SELECT
    20 HOUR UNION ALL
  SELECT
    21 HOUR UNION ALL
  SELECT
    22 HOUR UNION ALL
  SELECT
    23 HOUR
  ) a
  LEFT JOIN (
  SELECT
    date_format( gmt_created, '%H' ) HOUR,
    count( 0 ) count
  FROM
    application_main
  WHERE
    is_del = 1
    AND date_format( gmt_created, "%Y-%m-%d" ) = date_format( now(), "%Y-%m-%d" )
  GROUP BY
    date_format( gmt_created, '%H' )
  ) b ON a.HOUR = b.HOUR
ORDER BY
  time


返回结果:


20210430162030472.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7天前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
113 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
7天前
|
缓存 NoSQL 关系型数据库
Redis和Mysql如何保证数据⼀致?
在项目中,为了解决Redis与Mysql的数据一致性问题,我们采用了多种策略:对于低一致性要求的数据,不做特别处理;时效性数据通过设置缓存过期时间来减少不一致风险;高一致性但时效性要求不高的数据,利用MQ异步同步确保最终一致性;而对一致性和时效性都有高要求的数据,则采用分布式事务(如Seata TCC模式)来保障。
40 14
|
10天前
|
SQL 前端开发 关系型数据库
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
41 9
|
12天前
|
缓存 监控 关系型数据库
如何优化MySQL查询速度?
如何优化MySQL查询速度?【10月更文挑战第31天】
39 3
|
17天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
82 1
|
18天前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
38 1
|
16天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
47 0
|
9天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
23 4
|
7天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
20 1