我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql 近一年、近一月、昨日、近一周等时间统计

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql 近一年、近一月、昨日、近一周等时间统计

根据业务需求,我们需要统计得到各式各样的数据,以下是展示按照时间条件进行的统计样例。
--近一年select * from 表名 where YEAR (create_time )= YEAR (date_sub( now(), INTERVAL 0 YEAR ))
--近一月select * from 表名 where date(create_time) >= DATE_SUB(CURDATE(),INTERVAL 30 DAY)
--近一周select * from 表名 where date(create_time) >= DATE_SUB(CURDATE(),INTERVAL 7 DAY)
--昨日select * from 表名 where to_days(now( ) ) - to_days( create_time) <= 1

在此基础上,有部分业务场景需要符合一些统计图形进行展示:
一、统计近一年每个月的数据

     SELECT            v.`month`,            IFNULL(b.settlement_total_amount,0) settlement_total_amount,            IFNULL(b.supplier_sharing,0) supplier_sharing        FROM            (                SELECT                    DATE_FORMAT( CURDATE(), '%Y-%m' ) AS `month` UNION                SELECT                    DATE_FORMAT(( CURDATE() - INTERVAL 1 MONTH ), '%Y-%m' ) AS `month` UNION                SELECT                    DATE_FORMAT(( CURDATE() - INTERVAL 2 MONTH ), '%Y-%m' ) AS `month` UNION                SELECT                    DATE_FORMAT(( CURDATE() - INTERVAL 3 MONTH ), '%Y-%m' ) AS `month` UNION                SELECT                    DATE_FORMAT(( CURDATE() - INTERVAL 4 MONTH ), '%Y-%m' ) AS `month` UNION                SELECT                    DATE_FORMAT(( CURDATE() - INTERVAL 5 MONTH ), '%Y-%m' ) AS `month` UNION                SELECT                    DATE_FORMAT(( CURDATE() - INTERVAL 6 MONTH ), '%Y-%m' ) AS `month` UNION                SELECT                    DATE_FORMAT(( CURDATE() - INTERVAL 7 MONTH ), '%Y-%m' ) AS `month` UNION                SELECT                    DATE_FORMAT(( CURDATE() - INTERVAL 8 MONTH ), '%Y-%m' ) AS `month` UNION                SELECT                    DATE_FORMAT(( CURDATE() - INTERVAL 9 MONTH ), '%Y-%m' ) AS `month` UNION                SELECT                    DATE_FORMAT(( CURDATE() - INTERVAL 10 MONTH ), '%Y-%m' ) AS `month` UNION                SELECT                    DATE_FORMAT(( CURDATE() - INTERVAL 11 MONTH ), '%Y-%m' ) AS `month`            ) v                LEFT JOIN (                SELECT LEFT                    ( a.create_time, 7 ) AS `month`,                    sum(a.settlement_total_amount) as settlement_total_amount,                    sum(a.supplier_sharing) as supplier_sharing                FROM                    settlement_record AS a                WHERE                    a.create_time >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR)                GROUP BY                    `month`            ) AS b ON v.`month` = b.`month`        GROUP BY            v.`month`


二、统计近一月30天的数据

   SELECT            a.date_str,            IFNULL(b.settlement_total_amount,0) settlement_total_amount,            IFNULL(b.supplier_sharing,0) supplier_sharing        FROM            (                SELECT                    @cdate := date_add( @cdate, INTERVAL - 1 DAY ) AS date_str                FROM                    ( SELECT @cdate := date_add(CURDATE(), INTERVAL + 1 DAY ) FROM course_date ) tmp1                where @cdate > DATE_SUB(CURDATE(),INTERVAL 1 MONTH)            ) a                LEFT JOIN (                SELECT                    DATE_FORMAT( create_time, '%Y-%m-%d' ) AS days,                    sum(settlement_total_amount) as settlement_total_amount,                    sum(supplier_sharing) as supplier_sharing                FROM                    settlement_record                WHERE                    date(create_time) >= DATE_SUB(CURDATE(),INTERVAL 30 DAY)        GROUP BY days            ) b on a.date_str = b.days        ORDER BY a.date_str desc


ps:course_date表可以试任意一个表,但是前提表的数据量必须大于查询的天数跨度
三、当天按照小时展示

    SELECT            a.za_hour,            IFNULL(b.settlement_total_amount,0),            IFNULL(b.supplier_sharing,0)        FROM            (                SELECT                    0 AS za_hour UNION                SELECT                    1 AS za_hour UNION                SELECT                    2 AS za_hour UNION                SELECT                    3 AS za_hour UNION                SELECT                    4 AS za_hour UNION                SELECT                    5 AS za_hour UNION                SELECT                    6 AS za_hour UNION                SELECT                    7 AS za_hour UNION                SELECT                    8 AS za_hour UNION                SELECT                    9 AS za_hour UNION                SELECT                    10 AS za_hour UNION                SELECT                    11 AS za_hour UNION                SELECT                    12 AS za_hour UNION                SELECT                    13 AS za_hour UNION                SELECT                    14 AS za_hour UNION                SELECT                    15 AS za_hour UNION                SELECT                    16 AS za_hour UNION                SELECT                    17 AS za_hour UNION                SELECT                    18 AS za_hour UNION                SELECT                    19 AS za_hour UNION                SELECT                    20 AS za_hour UNION                SELECT                    21 AS za_hour UNION                SELECT                    22 AS za_hour UNION                SELECT                    23 AS za_hour            ) a                LEFT JOIN (                SELECT HOUR                    ( create_time ) AS days,                    sum( settlement_total_amount ) AS settlement_total_amount,                    sum( supplier_sharing ) AS supplier_sharing                FROM                    settlement_record                WHERE                    DATE_FORMAT( create_time, '%Y-%m-%d' ) = DATE_FORMAT( '', '%Y-%m-%d' )                GROUP BY days            ) b ON a.za_hour = b.days        ORDER BY a.za_hour

在这里插入图片描述
仅用于自己学习参考,如有错误,可提醒修改。

来源地址:https://blog.csdn.net/w18973572056/article/details/129364556

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql 近一年、近一月、昨日、近一周等时间统计

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

下载Word文档

猜你喜欢

mysql 近一年、近一月、昨日、近一周等时间统计

根据业务需求,我们需要统计得到各式各样的数据,以下是展示按照时间条件进行的统计样例。 --近一年select * from 表名 where YEAR (create_time )= YEAR (date_sub( now(), INTER
2023-08-23

js获取最近一周一个月三个月时间的示例分析

js获取最近一周一个月三个月时间的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。获取近一周时间var end = new Date();var year = end
2023-06-22

2024年9月四川计算机等级考试准考证打印时间:考前一周

从四川省教育考试院发布的《2024年9月四川省全国计算机等级考试报考公告》中得知,2024年9月四川计算机等级考试准考证打印时间:考前一周,报考人员在行登录报名系统打印准考证。为方便考生及时打印准考证,现提供2024年9月四川计算机等级考试准考证打印入口如下:
2024年9月四川计算机等级考试准考证打印时间:考前一周
2024-07-06

编程热搜

目录