场景引入:
凌晨3点,运营小张突然接到老板消息:“立刻给我这个月的销售趋势分析!” 😱 面对千万级数据库,难道要手动筛选?别慌!学会这招MySQL日期操作,3行代码就能优雅交差~
DATE_FORMAT
函数SELECT * FROM orders WHERE DATE_FORMAT(create_time, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m');
👉 原理:把日期格式化为年-月
格式比对,适合所有MySQL版本
SELECT * FROM sales WHERE order_date BETWEEN DATE_SUB(CURDATE(), INTERVAL DAY(CURDATE())-1 DAY) -- 当月第一天 AND LAST_DAY(CURDATE()); -- 当月最后一天
💡 优势:利用LAST_DAY()
函数自动识别不同月份天数,连闰年都考虑进去了!
YEARMONTH
比对SELECT * FROM user_logs WHERE EXTRACT(YEAR_MONTH FROM log_time) = EXTRACT(YEAR_MONTH FROM NOW());
🚀 效率王:直接提取年月数字比较(如202507),索引命中率超高
SELECT DAY(create_date) AS day_of_month, COUNT(*) AS order_count, SUM(amount) AS daily_revenue FROM transactions WHERE MONTH(create_date) = MONTH(CURDATE()) GROUP BY day_of_month ORDER BY day_of_month;
📈 输出效果:
day_of_month | order_count | daily_revenue
-----------------------------------
1 | 152 | 28450.00
2 | 187 | 35620.00
... | ... | ...
SELECT DAYNAME(create_time) AS weekday, AVG(payment_amount) AS avg_spending FROM purchases WHERE create_time >= DATE_FORMAT(NOW(), '%Y-%m-01') GROUP BY weekday ORDER BY FIELD(weekday, 'Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
🎯 商业洞察:轻松发现“周四客单价最高”这类规律
SELECT order_date, amount, SUM(amount) OVER (ORDER BY order_date) AS running_total FROM orders WHERE YEAR(order_date) = YEAR(CURDATE()) AND MONTH(order_date) = MONTH(CURDATE());
💎 高级技巧:动态显示当月累计销售额,汇报时直接截图就能用
时区陷阱:
SET time_zone = '+8:00'; -- 确保NOW()与业务时区一致
索引失效警告:
❌ 避免对日期字段使用函数包装(如MONTH(create_time)=7
)
✅ 正确姿势:
WHERE create_time BETWEEN '2025-07-01' AND '2025-07-31 23:59:59'
月末边界问题:
-- 获取下月第一天凌晨作为截止点更安全 WHERE create_time < DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 MONTH), INTERVAL -DAY(CURDATE())+1 DAY)
需求 | MySQL代码片段 |
---|---|
当月第一天 | DATE_FORMAT(NOW(), '%Y-%m-01') |
当月最后一天 | LAST_DAY(NOW()) |
当月第15天 | DATE_ADD(DATE_FORMAT(NOW(), '%Y-%m-01'), INTERVAL 14 DAY) |
本月还剩多少天 | DATEDIFF(LAST_DAY(NOW()), NOW()) |
:掌握这些姿势后,下次被突击要数据时,你完全可以喝着咖啡☕说:“稍等,5分钟出结果~” 数据人的优雅,往往就是这么朴实无华且枯燥(战术后仰)
(注:本文示例基于MySQL 8.0,其他版本可能需要微调语法)
本文由 钞傲旋 于2025-07-31发表在【云服务器提供商】,文中图片由(钞傲旋)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/492427.html
发表评论