在 Postgres 中以毫秒为单位转换时间戳

Converting a timestamp in milliseconds in Postgres

我有一个以毫秒为单位的时间戳:

1420066991000

translates转换为UTC:

Wed Dec 31 2014 23:03:11

当地时间:

Thu Jan 01 2015 00:03:11

但是,如果我尝试使用 to_timestamp 将其转换为 Postgres 中的时间戳,它会给我一个错误的日期时间:

select to_timestamp(1420066991000);
46970-02-17 13:03:20+00

从to_timestamp、expects a double precision input开始,我也是这样做的:

select to_timestamp(1420066991000.0);
46970-02-17 13:03:20+00

但是结果是一样的

我是否在我的 Postgres 配置中遗漏了一些东西,比如一些时区设置?还是错误?

to_timestamp()转换为unix时间,即时间单位为秒。由于您的数据以毫秒为单位,因此您应该将其除以 1000。

select to_timestamp(1420066991000/1000);