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

MySQL查询27天前数据及到期提醒区间数据的实现方法

MySQL 查询问题解答

问题1:如何从MySQL中查询27天前的数据?

这个得看你具体的需求和字段类型来调整,分几种情况说:

  • 如果你的日期字段是DATE类型,或者只关心日期不看时间:

    • 要27天前当天的所有数据:
      SELECT * FROM your_table
      WHERE date_column = DATE_SUB(CURDATE(), INTERVAL 27 DAY);
      
    • 要27天前及更早的所有数据:
      SELECT * FROM your_table
      WHERE date_column <= DATE_SUB(CURDATE(), INTERVAL 27 DAY);
      
  • 如果字段是DATETIME或TIMESTAMP类型,需要包含时间部分的话,就用NOW()代替CURDATE():

    -- 获取27天前此刻及更早的所有数据
    SELECT * FROM your_table
    WHERE datetime_column <= DATE_SUB(NOW(), INTERVAL 27 DAY);
    
  • 要是你的日期字段存成了字符串(比如'07/03/2018'这种格式),得先转成DATE类型再比较:

    SELECT * FROM your_table
    WHERE STR_TO_DATE(date_str_column, '%m/%d/%Y') = DATE_SUB(CURDATE(), INTERVAL 27 DAY);
    

问题2:如何添加到期提醒的时间条件?

先明确:你的核心需求是用户访问仪表盘时,当前日期在提醒开始日期(10/02/2018)到end_date当日之间,就显示这条提醒。分两种情况写语句:

情况1:固定提醒开始日期(针对你例子里的特定数据)

假设表名为your_table,如果end_date是DATE类型:

SELECT * FROM your_table
WHERE CURDATE() BETWEEN '2018-02-10' AND end_date;

如果end_date是MM/DD/YYYY格式的字符串,得先转换格式:

SELECT * FROM your_table
WHERE CURDATE() BETWEEN STR_TO_DATE('10/02/2018', '%m/%d/%Y') 
                    AND STR_TO_DATE(end_date, '%m/%d/%Y');

情况2:通用提醒规则(所有数据提前N天提醒)

如果你的需求是所有数据都按“提前N天开始提醒,直到到期日”的规则来(比如你例子里是提前25天),可以动态计算提醒开始时间:

-- 提前25天开始提醒,直到end_date当天
SELECT * FROM your_table
WHERE CURDATE() BETWEEN DATE_SUB(end_date, INTERVAL 25 DAY) AND end_date;

这样不管每条数据的end_date是什么,都会自动算出对应的提醒区间,用户每天打开仪表盘时,只要当前日期在区间内,就能看到对应的到期提醒。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:54:31