PostgreSQL查询pending状态恰好满2天的账户SQL写法问题
PostgreSQL查询待审批恰好2天的账户解决方案
以下根据两种常见需求场景给出对应正确写法,同时已修正你原SQL中WHRE的拼写错误:
场景1:精确匹配满48小时(时分秒完全对齐)
适合需求为待审批时长刚好满48小时,精确到秒/毫秒的场景:
SELECT * FROM kyc_document_check WHERE status = 'pending' AND created_at = (CURRENT_TIMESTAMP - INTERVAL '2 days')::timestamp;
说明:CURRENT_TIMESTAMP 默认带时区,转换为timestamp类型和created_at的无时区类型对齐,避免隐式转换报错。如果数据存在毫秒级误差可能漏查,可改用以下范围查询适配误差:
SELECT * FROM kyc_document_check WHERE status = 'pending' AND created_at BETWEEN (CURRENT_TIMESTAMP - INTERVAL '2 days' - INTERVAL '0.5 seconds')::timestamp AND (CURRENT_TIMESTAMP - INTERVAL '2 days' + INTERVAL '0.5 seconds')::timestamp;
场景2:仅匹配创建日期为两天前(不限制时分秒)
适合需求为只要是两天前的日期提交的待审批记录,不管当天什么时间提交的都算的场景,两种写法效果一致:
-- 写法1:用interval计算,可读性更强 SELECT * FROM kyc_document_check WHERE status = 'pending' AND DATE(created_at) = CURRENT_DATE - INTERVAL '2 days'; -- 写法2:日期直接减天数,更简洁 SELECT * FROM kyc_document_check WHERE status = 'pending' AND DATE(created_at) = CURRENT_DATE - 2;
内容的提问来源于stack exchange,提问作者Qorban Ferrell
相关产品推荐
相关产品推荐

