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

如何筛选1小时内即将过期的记录?求合适的WHERE子句

检索1小时内即将过期记录的WHERE子句及判断逻辑

核心判断逻辑

要筛选当前时间起1小时内即将过期的记录,本质是判断记录的「过期时间字段」落在以下区间内:

当前时间 ≤ 过期时间 ≤ 当前时间 + 1小时

简单说就是:这条记录的过期时间还没到,但距离现在最多只剩1小时。


各主流数据库的WHERE子句示例

假设你的表中有一个名为expire_time的字段,存储记录的过期时间(类型为datetime/timestamp类):

MySQL/MariaDB

WHERE expire_time BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 1 HOUR)

等价拆分写法:

WHERE expire_time >= NOW() AND expire_time <= NOW() + INTERVAL 1 HOUR

PostgreSQL

WHERE expire_time BETWEEN CURRENT_TIMESTAMP AND CURRENT_TIMESTAMP + INTERVAL '1 hour'

等价拆分写法:

WHERE expire_time >= CURRENT_TIMESTAMP AND expire_time <= CURRENT_TIMESTAMP + INTERVAL '1 hour'

SQL Server

WHERE expire_time BETWEEN GETDATE() AND DATEADD(HOUR, 1, GETDATE())

等价拆分写法:

WHERE expire_time >= GETDATE() AND expire_time <= DATEADD(HOUR, 1, GETDATE())

Oracle

WHERE expire_time BETWEEN SYSDATE AND SYSDATE + 1/24

(注:Oracle中数值1代表1天,1/24即为1小时)


关键注意事项

  • 确保expire_time字段为日期时间类型(如datetime、timestamp),不要用字符串存储时间,否则会导致索引失效或判断逻辑出错。
  • 统一数据库与应用的时区配置,避免因时区偏差导致筛选结果不符合预期(比如数据库用UTC、应用用本地时间)。
  • 若需排除刚好在当前时间过期的记录,可将>=改为>,只保留「未过期但1小时内会过期」的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:24:22