目录
折线图,因需要统计八年来的数据,所以用到了year()函数.
下面是测试用表结构及相关数据
获取2022年的数据SELECT * FROM jbts_handle where YEAR(handle_end_time) = 2022
Mysql查询当天,本周,本月所有数据记录
一、查询当天的记录:
二、查询昨天(固定几天前)的记录:
三、查询当前这周的数据:
四、查询本月的数据:
五、查询当前日期之前一周内每天的数据
select * from create_time where TO_DAYS(create_time) = TO_DAYS(NOW())
注意:这里的create_time是数据库中的时间字段,会根据这个时间去和今天的时间对比获取数据.
select count(1) from kunyao_shop_order where is_payed = 1 and TO_DAYS(NOW()) - TO_DAYS(create_time) = 1
注意:这里的时间实际上和查询当天的记录一样,但是用了算术差的概念,同样的要获取前天的时间就将结果的1改成2即可
SELECT * FROM wx_fund_record WHERE YEARWEEK(date_format(create_time,'%Y-%m-%d')) = YEARWEEK(now());
注意:这里的create_time是数据库中的时间字段,会根据这个时间去和今天的时间对比获取数据,除此之外,这个SQL语句获取的是美国的一周数据,中国和美国的周期不一样,美国的周日是中国的周一,所以如果要按照中国的周获取结果,需要推迟一天,SQL在下面:
SELECT * FROM wx_fund_record WHERE store_id=1 AND YEARWEEK(date_format(create_time,'%Y-%m-%d'),1) = YEARWEEK(now(),1);
SELECT SUM(money) FROM wx_fund_record WHERE store_id=?1 AND DATE_FORMAT( create_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
SELECT * FROM wx_fund_record WHERE store_id=1 AND DATE_FORMAT( create_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
注意:这里的create_time是数据库中的时间字段,会根据这个时间去和今天的时间对比获取数据.
SELECT a.click_date,IFNULL(b.count,0) AS COUNT
FROM (
SELECT CURDATE() AS click_date
UNION ALL
SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS click_date
UNION ALL
SELECT DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS click_date
UNION ALL
SELECT DATE_SUB(CURDATE(), INTERVAL 3 DAY) AS click_date
UNION ALL
SELECT DATE_SUB(CURDATE(), INTERVAL 4 DAY) AS click_date
UNION ALL
SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY) AS click_date
UNION ALL
SELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY) AS click_date
) a LEFT JOIN (
SELECT DATE(create_time) AS totalMoney, SUM(money+wallet) AS COUNT
FROM kunyao_shop_member_fund_record WHERE TYPE = 2
GROUP BY DATE(create_time)
) b ON a.click_date = b.totalMoney;
注意:这个不错,参考别人的,打个笔记,方便学习 参考地址