使用mysql查询当天、近一周、近一个月及近一年的数据以及各种报表查询sql

1.mysql查询当天的数据

|---|-----------------------------------------------------------------------|
| 1 | select * ``from table where to_days(时间字段) = to_days(now()); |

2.mysql查询昨天的数据

|---|-------------------------------------------------------------------------------|
| 1 | select * ``from table where to_days(now( ) ) - to_days( 时间字段名) <= 1 |

3.mysql查询近一个月的数据

|---|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | SELECT * ``FROM table WHERE date``(时间字段) >= DATE_SUB(CURDATE(),INTERVAL 1 ``MONTH``)//查询近一个月 SELECT * ``FROM table WHERE date``(时间字段) >= DATE_SUB(CURDATE(),INTERVAL 1 ``YEAR) //查询近一年 SELECT * ``FROM table WHERE date``(时间字段) >= DATE_SUB(CURDATE(),INTERVAL 7 ``DAY) //查询近七天 |

4.mysql查询本月的数据

|---|---------------------------------------------------------------------------------------------------------------|
| 1 | select * ``from table where DATE_FORMAT(时间字段, ``'%Y%m' ) = DATE_FORMAT( CURDATE( ) , ``'%Y%m' ) |

5.mysql查询上月的数据

|---|--------------------------------------------------------------------------------------------------------------------|
| 1 | select * ``from table where PERIOD_DIFF(date_format(now(),``'%Y%m'``) , date_format(时间字段,``'%Y%m'``)) =1 |

6.mysql查询本年的数据

|---|---------------------------------------------------------------------|
| 1 | select * ``from table where YEAR``(时间字段)=``YEAR``(now()); |

7.mysql查询上一年的数据

|---|---------------------------------------------------------------------------------------------------|
| 1 | select * ``from table where year``(时间字段)=``year``(date_sub(now(),interval 1 ``year``)); |

8.mysql查询本周数据(周一为第一天)

|---|---------------------------------------------------------------------------------------------------------|
| 1 | SELECT * ``FROM table WHERE YEARWEEK(date_format(时间字段,``'%Y-%m-%d'``),1) = YEARWEEK(now(),1); |

9.mysql查询近五分钟的数据

|---|-------------------------------------------------------------------------------------|
| 1 | SELECT * ``FROM table WHERE 时间字段 >= DATE_SUB(now(),INTERVAL 5 ``MINUTE``) |

10.mysql查询某年度的每个月数据报表

      select a.date AS 'xData',IFNULL(b.sum, 0) AS 'yData'
        from  (
        select DATE_FORMAT(adddate(DATE_SUB(CURDATE(), INTERVAL dayofyear(now()) - 1 DAY),
        INTERVAL numlist.id - 1 month), '%m') as date
        from (SELECT @xi := @xi + 1 as id
        from (SELECT 1 UNION SELECT 2 UNION SELECT 3) xc1,
        (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) xc2,
        (SELECT @xi := 0) xc0) as numlist
        ) a
        left join
        (
        SELECT  IFNULL(SUM(income),0) sum, DATE_FORMAT(time, '%m') as date
        FROM zq_cnz_hy_income_report ts
        WHERE YEAR(time)=#{year}
        GROUP BY date ORDER BY date
        ) b
        on a.date = b.date order by a.date

效果图:

11.mysql查询近一年的每个月数据报表

        SELECT v.month AS 'xData',IFNULL(b.COUNT,0) AS 'yData' 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.time,7) AS 'month',SUM(income) AS COUNT
        FROM zq_cnz_hy_income_report AS a
        LEFT JOIN zq_cnz_hy_user_station zs ON a.station_id=zs.station_id
        WHERE DATE_FORMAT(a.time,'%Y-%m')>DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 12 MONTH),'%Y-%m')
        GROUP BY MONTH) AS b
        ON v.month = b.month  GROUP BY v.month ORDER BY v.month

效果图:

12.mysql查询本月数据报表

       select a.date as 'xData',IFNULL(b.sum, 0) AS 'yData'
        from  (
        select date from (
        SELECT DATE_FORMAT(DATE_SUB(last_day(curdate()), INTERVAL xc-1 day), '%Y-%m-%d') as date
        FROM (
        SELECT @xi:=@xi+1 as xc from
        (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc1,
        (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) xc2,
        (SELECT @xi:=0) xc0
        ) xcxc) x0 where x0.date >= (select date_add(curdate(),interval-day(curdate())+1 day))
        ) a
        left join
        (
        select IFNULL(SUM(income),0) sum, DATE_FORMAT(time,'%Y-%m-%d') as date
        FROM zq_cnz_hy_income_report ts
        group by DATE_FORMAT(time, '%Y-%m-%d')
        ) b
        on a.date =b.date order by a.date

效果图:

13.mysql查询近一个月数据报表

SELECT
        b.created AS 'xData',
        IFNULL(c.sum, 0) AS 'yData'
        FROM
        (
        SELECT
        @cdate := date_add( @cdate, INTERVAL - 1 DAY ) created
        FROM
        ( SELECT @cdate := date_add( CURDATE( ), INTERVAL 1 DAY ) FROM zq_cnz_hy_income_report LIMIT 30 ) a
        ) b
        LEFT JOIN (
        select SUM(income) as sum, DATE_FORMAT(time,'%Y-%m-%d') as date
        FROM zq_cnz_hy_income_report ts
        group by DATE_FORMAT(time, '%Y-%m-%d')) c
        ON b.created = date_format( c.date, '%Y-%m-%d')
        GROUP BY
        b.created
        ORDER BY
        b.created;

效果图:

14.mysql查询近一周数据报表

 SELECT t1.datetime as 'xData', IFNULL(t2.num, 0) AS 'yData' FROM (
        SELECT CURDATE() AS datetime
        union all
        SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS datetime
        union all
        SELECT DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS datetime
        union all
        SELECT DATE_SUB(CURDATE(), INTERVAL 3 DAY) AS datetime
        union all
        SELECT DATE_SUB(CURDATE(), INTERVAL 4 DAY) AS datetime
        union all
        SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY) AS datetime
        union all
        SELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY) AS datetime
        ) t1 LEFT JOIN (
        select IFNULL(SUM(income),0) num, DATE_FORMAT(time, '%Y-%m-%d') as datetime
        FROM zq_cnz_hy_income_report ts
        GROUP BY LEFT(datetime, 10) ORDER BY datetime DESC LIMIT 7
        ) t2 ON t1.datetime = t2.datetime ORDER BY t1.datetime asc

效果图:

相关推荐
qq_3216653310 分钟前
mysql 数据库迁移到达梦数据库
数据库·mysql
Hello.Reader1 小时前
Redis大Key问题全解析
数据库·redis·bootstrap
测试者家园3 小时前
ChatGPT助力数据可视化与数据分析效率的提升(一)
软件测试·人工智能·信息可视化·chatgpt·数据挖掘·数据分析·用chatgpt做软件测试
疯狂小羊啊3 小时前
数据分析篇001
数据挖掘·数据分析
小馒头学python3 小时前
数据分析的常见问题及解决方案
数据挖掘·数据分析
靖顺3 小时前
【OceanBase 诊断调优】—— packet fly cost too much time 的根因分析
数据库·oceanbase
liuxin334455663 小时前
学籍管理系统:实现教育管理现代化
java·开发语言·前端·数据库·安全
天冬忘忧5 小时前
Flink优化----FlinkSQL 调优
大数据·sql·flink
yuanbenshidiaos6 小时前
C++--------------树
java·数据库·c++
dengjiayue7 小时前
MySQL 查询大偏移量(LIMIT)问题分析
数据库·mysql