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

Oracle转PostgreSQL:SYSDATE时间计算等效实现求助

解决PostgreSQL中时间计算丢失时分秒的问题

问题根源

PostgreSQL的CURRENT_DATE仅返回当前日期部分(时分秒固定为00:00:00),而Oracle的SYSDATE是包含当前完整时间戳(时分秒)的,这导致你原语句计算后丢失了时间精度。

替代方案

使用CURRENT_TIMESTAMP(或等效的NOW())替代CURRENT_DATE,它会返回包含时分秒的完整当前时间戳,再结合PostgreSQL的时间间隔运算来实现和Oracle一致的效果:

写法1:直接换算为小时间隔

SELECT CURRENT_TIMESTAMP - (
    SELECT to_number(config_value) * INTERVAL '1 hour' 
    FROM tvam_configs 
    WHERE config_key = 'TVAM_WIRELESS_PRICING'
);

写法2:通过天数除法换算

SELECT CURRENT_TIMESTAMP - (
    SELECT to_number(config_value) / 24 
    FROM tvam_configs 
    WHERE config_key = 'TVAM_WIRELESS_PRICING'
)::INTERVAL '1 day';

用于过滤timestamp字段的示例

将上述计算结果用于过滤last_modified字段:

SELECT *
FROM your_target_table
WHERE last_modified >= (
    SELECT CURRENT_TIMESTAMP - to_number(config_value) * INTERVAL '1 hour' 
    FROM tvam_configs 
    WHERE config_key = 'TVAM_WIRELESS_PRICING'
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:25:40