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

如何编写每日执行的SQL查询,精准获取next_due_date提前15天的记录

嘿,这个需求很明确,我帮你整理了不同数据库下的精准解决方案,确保你每天执行时都能拿到恰好提前15天到期的记录,完全不会包含区间内的其他数据~

核心思路

我们要做的就是精确匹配:next_due_date等于「当前日期 + 15天」。这里要注意如果next_due_date是带时间的类型(比如datetime),需要先截断时间部分,避免因为时分秒的差异导致匹配失败。

各数据库SQL实现

MySQL

SELECT *
FROM your_table_name
WHERE DATE(next_due_date) = DATE_ADD(CURRENT_DATE(), INTERVAL 15 DAY);
  • CURRENT_DATE()获取当前纯日期(不带时间),DATE_ADD给它加15天
  • DATE(next_due_date)用来截断next_due_date的时间部分,确保精确匹配

PostgreSQL

SELECT *
FROM your_table_name
WHERE DATE_TRUNC('day', next_due_date) = CURRENT_DATE + INTERVAL '15 days';

或者更简洁的写法:

SELECT *
FROM your_table_name
WHERE next_due_date::DATE = CURRENT_DATE + INTERVAL '15 days';

SQL Server

SELECT *
FROM your_table_name
WHERE CAST(next_due_date AS DATE) = DATEADD(day, 15, CAST(GETDATE() AS DATE));
  • 把GETDATE()也转成DATE类型,避免当前时间干扰加15天后的日期计算

Oracle

SELECT *
FROM your_table_name
WHERE TRUNC(next_due_date) = TRUNC(SYSDATE) + 15;
  • TRUNC()函数用来截断日期的时间部分,SYSDATE是Oracle的当前日期时间函数

注意事项

  • 记得把your_table_name替换成你实际的表名
  • 如果next_due_date本身就是纯日期类型(不带时间),可以去掉DATE()/DATE_TRUNC()/CAST()/TRUNC()这些转换函数,直接比较即可
  • 可以通过定时任务(比如MySQL事件、SQL Server代理作业、Linux cron等)设置每日自动执行这个查询,不用手动跑
  • 测试时可以把当前日期换成固定值,比如MySQL里用'2024-05-20'代替CURRENT_DATE(),验证结果是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:12:34