1、mysql查询最近月、周、年数据语句

--查询当前时间至三周前数据
select * from h2_info where time>DATE_SUB(CURDATE(), INTERVAL 3 WEEK)  
--查询当前时间至两个月前数据
select * from h2_info where time>DATE_SUB(CURDATE(), INTERVAL 2 MONTH)
 --查询当前时间至一年前数据
select * from h2_info where time>DATE_SUB(CURDATE(), INTERVAL 1 YEAR)       

(1)、DATE_SUB() 函数从日期减去指定的时间间隔。

        语法:DATE_SUB(date,INTERVAL expr type)

                date 参数是合法的日期表达式。

                expr 参数是您希望添加的时间间隔。

                type 参数可以是YEAR、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND

(2)、CURDATE() 函数返回当前的日期。

        语法:CURDATE()

2、MySQL中的根据日期、时间分组

select
    DATE_FORMAT(create_time, "%Y-%m-%d %H:%i:%s") as time,count(id) as total
from
    h2_info
group by time

(1)、DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。

        语法:DATE_FORMAT(date,format)

                date 参数是合法的日期。

                format 规定日期/时间的输出格式。(日期加时间:%Y-%m-%d %H:%i:%s,日期:%Y-%m-%d,年月日期:%Y-%m)

结合使用:

--统计最近七个月内的数量
select
        DATE_FORMAT (create_time_,'%Y-%m') AS monthNum, SUM(total_) AS countNum, COUNT(*) AS orderNum
from
    h2_info_
where
    create_time_ > DATE_SUB(CURDATE(), INTERVAL 7 MONTH)
group by
    DATE_FORMAT (create_time_,'%Y-%m')

   3、根据已有类型分类统计数量

--统计每个预警等级的任务数量
select
    count(*) as num,
    sum(CASE grade WHEN 1 THEN 1 ELSE 0 END) as red_number,
    sum(CASE grade WHEN 2 THEN 1 ELSE 0 END) as orange_number,
    sum(CASE grade WHEN 3 THEN 1 ELSE 0 END) as yello_number,
    sum(CASE grade WHEN 4 THEN 1 ELSE 0 END) as blue_number
from 
    admin_alarm
where 
    department like concat(#{code},'%');  

(1)、case when then else end用法

        case 条件 when 值 then 成立返回值 else 不成立返回值 end

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐