SQL查询需求:筛选出借表中含当日且截至15:00的有效记录
调整SQL查询以满足日期时间范围需求
原SQL语句存在逻辑错误(将固定日期与当前时间比较,且判断方向颠倒),以下是调整后的语句,可实现仅显示不早于昨天日期,且当日记录截至15:00的需求:
假设表中存储出借时间的字段为LendingDateTime(日期时间类型),调整后SQL如下:
SELECT * FROM dbo.Lending WHERE -- 筛选日期不早于昨天的记录 CAST(LendingDateTime AS DATE) >= DATEADD(DAY, -1, CAST(GETDATE() AS DATE)) -- 对当日记录额外限制时间不超过15:00 AND ( CAST(LendingDateTime AS DATE) <> CAST(GETDATE() AS DATE) OR LendingDateTime <= DATEADD(HOUR, 15, CAST(CAST(GETDATE() AS DATE) AS DATETIME)) )
逻辑说明:
DATEADD(DAY, -1, CAST(GETDATE() AS DATE)):获取昨天的零点日期,确保记录的日期部分不早于昨天。- 第二个条件分支:
- 若记录日期不是今天,直接通过筛选;
- 若是今天的记录,将其与「当日15:00」时间点对比,仅保留时间不晚于15:00的记录。
如果表中日期与时间是分开存储的(比如LendDate为日期类型,LendTime为时间类型),可调整为:
SELECT * FROM dbo.Lending WHERE LendDate >= DATEADD(DAY, -1, CAST(GETDATE() AS DATE)) AND ( LendDate <> CAST(GETDATE() AS DATE) OR LendTime <= CAST('15:00:00' AS TIME) )
内容的提问来源于stack exchange,提问作者xcrean
相关产品推荐
相关产品推荐

