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

基于日期范围拉取数据:last_updated与program_end_day的7天筛选问题

筛选last_updated在program_end_day及之后7天内的行

核心逻辑

你需要的是last_updated等于program_end_day,或者在program_end_day之后7天内的记录,本质是让last_updated落在[program_end_day, program_end_day + 7天]的闭区间内。

不同数据库的正确SQL写法

SQL Server/Azure SQL

WHERE last_updated BETWEEN program_end_day AND DATEADD(DAY, 7, program_end_day)

MySQL/MariaDB

-- 两种写法都可行
WHERE last_updated BETWEEN program_end_day AND DATE_ADD(program_end_day, INTERVAL 7 DAY)
-- 或更简洁的版本
WHERE last_updated BETWEEN program_end_day AND program_end_day + INTERVAL 7 DAY

PostgreSQL

WHERE last_updated BETWEEN program_end_day AND program_end_day + INTERVAL '7 days'

Oracle

WHERE last_updated BETWEEN program_end_day AND program_end_day + 7

验证示例数据

用你给出的测试数据验证:

  • 第一条记录:2024-03-13 <= 2024-03-15 <= 2024-03-20(2024-03-13加7天),符合条件;
  • 第二条记录:2024-03-20 <= 2024-03-26 <= 2024-03-27(2024-03-20加7天),符合条件。

之前写法的问题

你之前使用的last_updated >= DATEADD(DAY,7,program_end_day)是筛选program_end_day7天之后的记录,和你的需求完全相反。如果数据库中存在较早的program_end_day,或者你误将天数参数设为负数(比如DATEADD(DAY,-7,...)),就会返回大量早于program_end_day多年的无效记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 23:15:22