上一篇
📢 最新动态
2025年8月,MySQL 8.4版本正式发布,优化了时间函数性能,特别是DATE_FORMAT
和GROUP BY
日期分组的执行效率,让时间统计查询更快更流畅!🎉
数据分析中,按天、周、月统计是常见需求。
MySQL提供了多种灵活的时间分组方法,下面详细介绍!
DATE()
函数SELECT DATE(create_time) AS day, COUNT(*) AS order_count FROM orders GROUP BY DATE(create_time) ORDER BY day;
✅ 适用场景:字段是datetime
或timestamp
类型,需忽略时分秒。
DATE_FORMAT()
格式化SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS day, SUM(amount) AS total_amount FROM payments GROUP BY day;
💡 小技巧:%Y-%m-%d
是标准日期格式,也可改为%d/%m/%Y
等自定义格式。
SELECT DATE_FORMAT(create_time, '%Y-%m') AS month, AVG(price) AS avg_price FROM products GROUP BY month;
SELECT YEAR(create_time) AS year, COUNT(DISTINCT user_id) AS active_users FROM logs GROUP BY year;
SELECT CONCAT(YEAR(create_time), '-Week', WEEK(create_time)) AS week, SUM(clicks) AS total_clicks FROM ads_data GROUP BY week;
SELECT DATE(created_at) AS day, COUNT(*) FILTER (WHERE deleted_at IS NULL) AS active_items FROM items GROUP BY day;
SELECT HOUR(event_time) AS hour, COUNT(*) AS events FROM user_actions GROUP BY hour ORDER BY hour;
-- 统计最近30天每日数据 SELECT DATE(created_at) AS day, COUNT(*) FROM orders WHERE created_at >= NOW() - INTERVAL 30 DAY GROUP BY day;
Q:分组后日期显示不整齐怎么办?
A:用DATE_FORMAT
统一格式,
DATE_FORMAT(date_column, '%Y-%m-%d 00:00:00') AS formatted_date
Q:时区不一致导致分组错误?
A:先用CONVERT_TZ()
转换时区:
GROUP BY DATE(CONVERT_TZ(create_time, '+00:00', '+08:00'))
DATE()
或DATE_FORMAT
YEAR()
/MONTH()
/WEEK()
等函数 掌握这些方法,90%的时间统计需求都能搞定!试试在你的项目里用起来吧~ ✨
本文由 戏媚 于2025-08-01发表在【云服务器提供商】,文中图片由(戏媚)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/501834.html
发表评论