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

如何从JavaScript获取PostgreSQL中时间戳的内部整数表示?

解决JavaScript获取PostgreSQL时间戳整数表示的方法

一、SQL层面的正确转换方式

你之前用SELECT current_timestamp::int8;失败,是因为PostgreSQL不能直接将时间戳强转为bigint,得用专用函数实现:

  • 转秒级Unix时间戳:SELECT EXTRACT(EPOCH FROM current_timestamp)::int8;
  • 转毫秒级整数:SELECT (EXTRACT(EPOCH FROM current_timestamp) * 1000)::bigint;
  • 转PostgreSQL内部微秒级整数(以2000-01-01为基准):SELECT (DATE_PART('epoch', current_timestamp) * 1000000)::bigint;

二、支持二进制结果格式的JavaScript驱动

不用自己编写或修改驱动,现有成熟驱动已支持二进制模式:

  • pg(node-postgres):最常用的纯JS驱动,默认返回文本格式,可在创建客户端/连接池时配置binary: true开启二进制模式。此时时间戳会以Buffer形式返回,你可以自行解析为整数,不过需要额外处理类型转换逻辑。
  • pg-native:基于libpq的原生驱动,天生支持二进制格式,性能优于纯JS驱动,适合对性能要求高的场景,同样可配置返回二进制数据直接处理底层时间戳表示。

三、自定义类型解析器方案

如果不想开启二进制模式,也能在pg驱动中自定义时间戳解析逻辑,自动将文本格式转成整数:

const { types } = require('pg');
// 将OID为1114的timestamp类型解析为毫秒级整数
types.setTypeParser(1114, (val) => {
  return new Date(val).getTime();
});

配置后,所有查询返回的时间戳列都会自动转为毫秒级整数,无需每次在SQL中手动转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:20:06