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

SQL Server如何查询距离Retest Date还有60天的对应记录

问题原因分析
  • 列名不匹配:你提供的表结构中复测日期对应的列名为u_retest,但你的原查询语句中使用的字段是u_retestdt,列名错误会直接导致无法读取正确的字段值。
  • 时间精度匹配问题:GETDATE()返回的是包含时分秒毫秒的完整时间值,你用=做精确匹配的前提下,只有u_retest的时间部分和DATEADD(DD,60,GETDATE())的时分秒毫秒完全一致的行才会被返回,几乎不可能命中现有数据。
修正后的查询方案

常用场景(仅匹配日期,忽略时分秒)

这是绝大多数“距离到期还有X天”需求的适配写法,只要复测日期的日期部分等于当前日期加60天的日期部分就会被命中:

SELECT r.reagentlotid, r.reagentlotdesc, r.u_retest
FROM reagentlot r
WHERE DATEDIFF(DAY, GETDATE(), u_retest) = 60;

你也可以用日期强转的写法实现相同效果:

SELECT r.reagentlotid, r.reagentlotdesc, r.u_retest
FROM reagentlot r
WHERE CAST(u_retest AS DATE) = CAST(DATEADD(DAY, 60, GETDATE()) AS DATE);

特殊场景(需要精确匹配到当前时间点刚好满60天)

如果业务要求精确到秒级匹配,可以用范围查询避免毫秒级精度误差:

SELECT r.reagentlotid, r.reagentlotdesc, r.u_retest
FROM reagentlot r
WHERE u_retest >= DATEADD(DAY, 60, CAST(GETDATE() AS DATETIME))
  AND u_retest < DATEADD(SECOND, 1, DATEADD(DAY, 60, CAST(GETDATE() AS DATETIME)));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:09:04