EXTRACT returns 数字而不是双精度

EXTRACT returns numeric instead double precision

我运行遇到一个问题:在本地数据库上,EXTRACT returns numeric,由于后端无法将其解析为int,导致错误。在生产数据库上,一切都运行良好,returns 双精度。在 sql 中,所有内容都是没有时区的时间戳类型。这种行为与什么有关?一些本地设置?

select EXTRACT(EPOCH FROM (finish_timestamp_p - answer_timestamp_p)) AS duration from ...

在 PostgreSQL v14 中,EXTRACT 的 return 类型从 double precision 更改为 numeric

我可以想到两个解决方案:

  • 添加显式类型转换:

    CAST (EXTRACT (....) AS integer)
    
  • 使用 date_part 而不是 EXTRACT,仍然 returns double precision