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

如何查询TableB中日期为TableA日期周年前一天的记录ID

解决方案:查询符合周年前一天条件的TableB记录ID

最终SQL查询语句

SELECT b.Id AS TableBId
FROM TableA a
INNER JOIN TableB b ON a.Id = b.TableAId
WHERE DATEADD(day, 1, b.DateTwo) = DATEADD(year, DATEDIFF(year, a.DateOne, DATEADD(day, 1, b.DateTwo)), a.DateOne)

逻辑解释

核心思路是将DateTwo加1天后,验证该日期是否恰好是对应DateOne的整数周年纪念日:

  1. DATEADD(day, 1, b.DateTwo):把目标日期往后推1天,得到待验证的周年候选日期。
  2. DATEDIFF(year, a.DateOne, 候选日期):计算DateOne到候选日期的年份差n(正整数)。
  3. DATEADD(year, n, a.DateOne):生成DateOne的n周年日期,和候选日期对比,若相等则说明原DateTwo是该周年的前一天。

测试数据验证

针对你的测试数据:

  • TableA中DateOne为2020-01-02
  • TableB第一条记录DateTwo=2021-01-01:加1天为2021-01-02,是DateOne的1周年,符合条件。
  • TableB第二条记录DateTwo=2022-02-02:加1天为2022-02-03,与DateOne的2周年2022-01-02不符,排除。
  • TableB第三条记录DateTwo=2023-01-01:加1天为2023-01-02,是DateOne的3周年,符合条件。

执行查询后将返回TableB的Id为1和3的记录,与预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:58:24