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

PostgreSQL执行DELETE时报HOUR附近语法错误 如何保留最近1小时数据

问题原因

报错是因为SQL中的时间间隔写法不符合PostgreSQL语法规范:PostgreSQL要求INTERVAL后面的时间单位参数需要用单引号包裹,同时不需要额外用括号把NOW()和时间间隔运算逻辑包在一起。

修复后的正确SQL
DELETE FROM common.orders WHERE created_at < NOW() - INTERVAL '1 HOUR';

你也可以使用类型转换的写法,效果完全一致:

DELETE FROM common.orders WHERE created_at < NOW() - '1 HOUR'::INTERVAL;
注意事项
  • 执行删除操作前,建议先运行查询语句验证待删除数据的范围是否符合预期,避免误删有效数据:
    SELECT * FROM common.orders WHERE created_at < NOW() - INTERVAL '1 HOUR';
    
  • 如果业务有指定时区要求,可以将NOW()替换为CURRENT_TIMESTAMP AT TIME ZONE '目标时区',保证时间计算和业务时区匹配
  • 若表数据量较大,建议分批次执行删除操作,避免长时间锁表影响正常业务读写

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:15:05