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

PostgreSQL中如何将时间间隔转换为秒数?含具体字段转换需求

在PostgreSQL中将时间间隔转换为秒数

在PostgreSQL里,有两种常用方法可以把interval类型的时间间隔转换为总秒数:

方法1:使用EXTRACT(EPOCH FROM ...)

这是最常用的方式,EXTRACT(EPOCH FROM interval)会返回时间间隔对应的总秒数,包含小数部分(用于表示毫秒、微秒等)。

结合你的需求,直接把计算time_left的表达式传入函数即可:

SELECT EXTRACT(EPOCH FROM ({{%event}}.created_at - (CURRENT_TIMESTAMP - INTERVAL '3600 SECOND'))) AS time_left_seconds;

方法2:使用DATE_PART('epoch', ...)

和EXTRACT效果完全一致,语法上略有不同:

SELECT DATE_PART('epoch', ({{%event}}.created_at - (CURRENT_TIMESTAMP - INTERVAL '3600 SECOND'))) AS time_left_seconds;

补充说明

  • 两种方法都会将所有时间单位(年、月、日、小时、分钟等)统一换算成秒,比如1天2小时会返回93600(243600 + 23600)。
  • 如果计算出的time_left是负数(比如created_at早于CURRENT_TIMESTAMP - 1小时),返回的秒数也会是负数,符合实际逻辑。
  • 结果支持小数,比如时间间隔为1秒500毫秒,会返回1.5。

如果你需要先计算出time_left再转换,也可以用子查询:

SELECT EXTRACT(EPOCH FROM time_left) AS time_left_seconds
FROM (
    SELECT ({{%event}}.created_at - (CURRENT_TIMESTAMP - INTERVAL '3600 SECOND')) AS time_left
    FROM {{%event}}
) AS sub;

内容的提问来源于stack exchange,提问作者Вячеслав Предеин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:07:22