SQL计算当前日期的前一天,按每半个小时作为时间区间统计数据库的数据到时间点上。
我这里的create_time为visit表中数据插入数据库的时间,curdate()函数返回当前的日期(例如:2020-06-08)
select a.h as `hour`,if(a.v=0,":00",":30") `minute`,a.total as `total`
from
(SELECT HOUR(create_time) AS h, FLOOR(MINUTE(create_time) / 30) AS v,count(*) total
from visit
where DATE_FORMAT(create_time,'%Y-%m-%d') = date_add(date_format(curdate(),'%Y-%m-%d'), interval -1 day)
and x_id = #{XId}
GROUP BY h, v) a
//如果计算当前的日期把上面的
date_add(date_format(curdate(),'%Y-%m-%d'), interval -1 day)
替换为
DATE_FORMAT(curdate(),'%Y-%m-%d')
即可