-- 昨日报:【5】为用户设置的点数,统计从前天五点到昨天五点
-- beginDate=endDate-24hour: (日报生成当天时间-1day)+(设置点数-24小时)
-- endDate: (日报生成当天时间-1day)+设置点数
select date_add(CURDATE(), interval -1 day)+ INTERVAL 5-24 hour AS beginDate,date_add(CURDATE(), interval -1 day)+ INTERVAL 5 hour - interval 1 second AS endDate
-- 上周报:【2】为用户设置的周期,上上周二 0点到本周一 23:59分
-- 公式:beginDate=endDate-7day: 日报生成当时日期-(日报生成当日周几-1-用户设置的参数)-7day
-- endDate: 日报生成当时日期-(日报生成当日周几-1-用户设置的参数)-1second
select date_add(CURDATE(), interval -(DAYOFWEEK(CURDATE())-1-2)-7 day) as beginDate,date_add(CURDATE(), interval -(DAYOFWEEK(CURDATE())-1-2) day)-interval 1 second as endDate
-- 上月报:无参数
-- beginDate: 月报生成当前月的第一天 - 1month = 上个月的第一天
-- endDate: 月报生成当前月的第一天 - 1秒 = 上个月的最后一秒
select date_add(curdate(), interval - day(curdate()) + 1 day) - interval 1 month as beginDate,date_add(curdate(), interval - day(curdate()) + 1 day) - interval 1 second as endDate
.....
-- beginDate=endDate-24hour: (日报生成当天时间-1day)+(设置点数-24小时)
-- endDate: (日报生成当天时间-1day)+设置点数
select date_add(CURDATE(), interval -1 day)+ INTERVAL 5-24 hour AS beginDate,date_add(CURDATE(), interval -1 day)+ INTERVAL 5 hour - interval 1 second AS endDate
-- 上周报:【2】为用户设置的周期,上上周二 0点到本周一 23:59分
-- 公式:beginDate=endDate-7day: 日报生成当时日期-(日报生成当日周几-1-用户设置的参数)-7day
-- endDate: 日报生成当时日期-(日报生成当日周几-1-用户设置的参数)-1second
select date_add(CURDATE(), interval -(DAYOFWEEK(CURDATE())-1-2)-7 day) as beginDate,date_add(CURDATE(), interval -(DAYOFWEEK(CURDATE())-1-2) day)-interval 1 second as endDate
-- 上月报:无参数
-- beginDate: 月报生成当前月的第一天 - 1month = 上个月的第一天
-- endDate: 月报生成当前月的第一天 - 1秒 = 上个月的最后一秒
select date_add(curdate(), interval - day(curdate()) + 1 day) - interval 1 month as beginDate,date_add(curdate(), interval - day(curdate()) + 1 day) - interval 1 second as endDate
转载请注明:谷谷点程序 » mysql 报表时间统计计算