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

SQL查询需求:获取截至今日14天前的近3年订单数据

自动更新日期范围的订单SQL查询方案

核心逻辑说明

你需要的是每日自动计算日期范围的筛选,核心是用数据库的「当前日期函数」动态生成边界,无需手动修改日期。DATE_DIFF确实可用于判断日期差,但它是用来做条件判断的,所以要放在WHERE子句里,而非SELECT(除非你需要把天数差作为结果列展示)。

通用SQL示例(兼容多数数据库)

SELECT *
FROM 你的订单表名
WHERE 
  -- 筛选LastValidatedDate为今日往前14天及更早的数据
  DATE_DIFF(CURRENT_DATE(), LastValidatedDate, DAY) >= 14
  -- 同时限制在近3年范围内
  AND LastValidatedDate >= CURRENT_DATE() - INTERVAL 3 YEAR;

不同数据库的适配写法

不同数据库的日期函数略有差异,给你几个常见版本:

  • MySQL/MariaDB:
SELECT *
FROM 你的订单表名
WHERE 
  DATEDIFF(CURDATE(), LastValidatedDate) >= 14
  AND LastValidatedDate >= DATE_SUB(CURDATE(), INTERVAL 3 YEAR);
  • SQL Server:
SELECT *
FROM 你的订单表名
WHERE 
  DATEDIFF(day, LastValidatedDate, GETDATE()) >= 14
  AND LastValidatedDate >= DATEADD(year, -3, GETDATE());
  • BigQuery:
SELECT *
FROM 你的订单表名
WHERE 
  DATE_DIFF(CURRENT_DATE(), LastValidatedDate, DAY) >= 14
  AND LastValidatedDate >= DATE_SUB(CURRENT_DATE(), INTERVAL 3 YEAR);

关键细节解释

  1. 自动更新的核心:CURRENT_DATE()/CURDATE()/GETDATE()这些系统函数会自动取查询执行时的当前日期,所以每日刷新时日期边界会自动调整。
  2. DATE_DIFF的用法:它的作用是计算两个日期的差值,我们用它判断LastValidatedDate是否早于今日14天以上,因此必须放在WHERE子句里作为筛选条件。如果只是想在结果里显示「距离今日已过去多少天」,才需要把它放在SELECT中。
  3. 近3年的边界:用当前日期减去3年,确保只取最近3年内符合条件的数据,避免查询过久的历史数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:10:13