假设今天是2025年8月5日,查询近3年数据的MySQL SQL语句可以这样写:

SELECT * 
FROM your_table 
WHERE time >= DATE_SUB('2025-08-05', INTERVAL 3 YEAR)
  AND time <= '2025-08-05 23:59:59';

或动态版本(自动获取当前日期):

SELECT * 
FROM your_table 
WHERE time >= DATE_SUB(CURDATE(), INTERVAL 3 YEAR)
  AND time <= NOW();

关键点解析:

  1. DATE_SUB(CURDATE(), INTERVAL 3 YEAR)
    动态计算三年前的日期(2022-08-05 00:00:00)

  2. NOW()
    获取当前精确时间(2025-08-05 HH:MM:SS)

  3. 时间范围逻辑
    >= 三年前零点 + <= 当前时刻 确保包含完整三年数据

优化建议:

  1. 如果表数据量大,建议为time字段添加索引
  2. 如果只需要日期部分(忽略时分秒),可改用:
    WHERE DATE(time) BETWEEN '2022-08-05' AND '2025-08-05'
    

需要我解释某个具体细节吗?

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐