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

SQL Server 依据配置时间间隔筛选符合条件记录的问题求助

问题原因分析
  • 原SQL中DATEDIFF函数参数使用错误:SQL Server中DATEDIFF语法为DATEDIFF(datepart, startdate, enddate),你传入的第二个参数为数字10,不符合日期类型要求,计算逻辑完全错误
  • 时间叠加逻辑不对:你需要的是给创建时间叠加10天+8小时30分,再和当前时间比较,原语句的时间拼接逻辑不符合需求
正确查询写法

如果直接硬编码满足10天8小时30分的条件,语句如下:

SELECT * FROM [Table]
WHERE 
    DATEADD(minute, 8*60 + 30, DATEADD(day, 10, CreatedDate)) <= GETDATE()

如果你需要直接读取配置项RetIntervel = '10,8.30 PM'动态计算,可先拆分配置值再做时间计算:

SELECT * FROM [Table]
CROSS APPLY (
    SELECT 
        -- 拆分配置的天数部分
        Days = CAST(PARSENAME(REPLACE(RetIntervel, ',', '.'), 2) AS INT),
        -- 拆分配置的时间部分转成分钟数
        TimeMinutes = DATEDIFF(minute, '00:00:00', CAST(REPLACE(PARSENAME(REPLACE(RetIntervel, ',', '.'), 1), '.', ':') AS DATETIME))
) AS Config
WHERE 
    DATEADD(minute, Config.TimeMinutes, DATEADD(day, Config.Days, CreatedDate)) <= GETDATE()
逻辑说明
  • 先给CreatedDate叠加10天,再叠加8小时30分(即510分钟),得到目标截止时间
  • 只要当前时间GETDATE()大于等于这个截止时间,就满足“总时长满10天加8小时30分”的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:24:04