You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL按日期筛选记录:查询献血者表中献血日期>=3个月的记录方法

MySQL 筛选献血满3个月及以上记录实现方案

核心逻辑是计算出当前时间往前推3个月的时间节点,再将blood_donated_date字段与该节点比较即可。

基础查询语句

如果你的blood_donated_date字段为DATE、DATETIME或TIMESTAMP类型,直接使用MySQL内置的日期函数即可实现:

SELECT *
FROM `blood_donor`
WHERE `blood_donated_date` <= DATE_SUB(CURDATE(), INTERVAL 3 MONTH);

注意:此处用小于等于是因为需求是「献血日期满3个月」,例如当前日期为2024-10-08,3个月前的日期为2024-07-08,所有献血日期早于或等于2024-07-08的记录都满足要求,不要写反比较符号。


场景适配调整

  • 若需要精确到时分秒(比如blood_donated_date存储了具体献血时间,要求满90天/720小时才算符合要求),可以把CURDATE()替换为NOW():
    SELECT *
    FROM `blood_donor`
    WHERE `blood_donated_date` <= DATE_SUB(NOW(), INTERVAL 3 MONTH);
    
  • 若你的数据库存在时区差异,可先统一会话时区再执行查询,例如设置为东八区:
    SET time_zone = '+8:00';
    SELECT *
    FROM `blood_donor`
    WHERE `blood_donated_date` <= DATE_SUB(CURDATE(), INTERVAL 3 MONTH);
    
  • 表数据量较大时,建议给blood_donated_date字段添加普通索引,可大幅提升查询效率。

常见踩坑说明

很多人会误写为blood_donated_date >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH),这个逻辑筛选出的是最近3个月内有献血记录的用户,和需求刚好相反,需要特别注意。

内容的提问来源于stack exchange,提问作者sharif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 16:54:02