MySQL统计日期语句大全
今天
SELECT * FROM 表名 WHERE TO_DAYS(时间字段名) = TO_DAYS(NOW());
SELECT * FROM 表名 WHERE DATE(时间字段名) = CURDATE();
昨天
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 1 DAY) <= DATE(时间字段名)
SELECT * FROM 表名 WHERE TO_DAYS(NOW()) - TO_DAYS(时间字段名) <= 1
近7天/1周
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(时间字段名)
SELECT * FROM 表名 WHERE TO_DAYS(NOW()) - TO_DAYS(时间字段名) <= 7
近30天
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= DATE(时间字段名)
SELECT * FROM 表名 WHERE TO_DAYS(NOW()) - TO_DAYS(时间字段名) <= 30
查询近6个月/半年的数据
SELECT * FROM 表名 WHERE 时间字段名 BETWEEN DATE_SUB(NOW(),INTERVAL 6 MONTH) AND NOW()
本周
SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT(时间字段名, '%Y-%m-%d'))=YEARWEEK(NOW())
上周
SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT(时间字段名, '%Y-%m-%d'))=YEARWEEK(NOW())-1
本自然月
SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名, '%Y%m') = DATE_FORMAT( CURDATE(), '%Y%m')
SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名, '%Y-%m')=DATE_FORMAT(NOW(), '%Y-%m')
上一自然月
SELECT * FROM 表名 WHERE PERIOD_DIFF(DATE_FORMAT(NOW() , '%Y%m'), DATE_FORMAT(时间字段名, '%Y%m'))=1
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= DATE(时间字段名);
SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名, '%Y-%m')=DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m')
本季度
SELECT * FROM 表名 WHERE QUARTER(时间字段名)=QUARTER(NOW())
上季度
SELECT * FROM 表名 WHERE QUARTER(时间字段名)=QUARTER(DATE_SUB(NOW(),INTERVAL 1 QUARTER))
今年
SELECT * FROM 表名 WHERE YEAR(时间字段名)=YEAR(NOW())
去年
SELECT * FROM 表名 WHERE YEAR(时间字段名)=YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR))
分类:
CheatSheet
标签:
MySQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构