如何在没有时区的情况下将 unix 时间转换为 PostgreSQL 的 Timstamp?

Dev*_*she 18 postgresql timestamp timezone

我有一个运行在服务器上的 PostgreSQL 数据库,它的时区设置为印度的时区(即 UTC +5:30)

我在一个表中有一些数据,它是这样创建的:

CREATE TABLE "CLOUDDATA"
(
  "CD_Tm_Obs" timestamp without time zone,
  "CD_Avg_Cloud" double precision
)
Run Code Online (Sandbox Code Playgroud)

我想查询数据并获取特定时间的值。我的输入将是 Unix 时间戳(即 1970 年 1 月 1 日的秒数)

转换UNIX时间时间戳我发现的唯一方法是这样的: select to_timestamp(TRUNC(CAST(1395036000 AS bigint)))。但这会创建一个带时区的时间戳。我的数据在 中timestamp without time zone,所以我没有得到任何结果。

如何在没有时区的情况下将 unix 时间转换为 PostgreSQL 的 Timstamp?

小智 41

这里有几种方法:

我已经简化您的查询,因为你不应该需要的TRUNC(),也不是CAST()

SELECT to_timestamp(1395036000) AT TIME ZONE 'UTC';

SELECT timestamp '1970-01-01 00:00:00' + interval '1395036000 second';
Run Code Online (Sandbox Code Playgroud)

作为参考,可以在以下链接中找到更多信息: