在postgresql中将日期转换为unix时间戳

jav*_*ude 14 postgresql date unix-timestamp

我有一个带有abc列的表,其中包含unix时间戳(例如13898161481435),我想在日期之间运行select.

做一个是没有效率的

where TO_CHAR(TO_TIMESTAMP(abc / 1000), 'DD/MM/YYYY') > '14/01/2014 00:00:00' and ..;
Run Code Online (Sandbox Code Playgroud)

这会转换每条记录.

而是做一些像
abc>('14/01/2014 00:00:00'tobigint())和abc <...

但我无法找到任何参考,但相反的情况.

Vig*_*r A 21

试试这个

WHERE abc > extract(epoch from timestamp '2014-01-28 00:00:00')
Run Code Online (Sandbox Code Playgroud)

PostgreSQL文档


har*_*mic 5

您无需将其转换为 char 即可进行比较。

WHERE to_timestamp(abc/1000) > timestamp '2014-01-28 00:00:00'
Run Code Online (Sandbox Code Playgroud)

我不认为转换会非常低效,因为时间戳在内部以类似于纪元秒的格式存储(不可否认,具有不同的来源和分辨率)。

如果你真的想走另一条路:

WHERE abc > extract(epoch from timestamp '2014-01-28 00:00:00')
Run Code Online (Sandbox Code Playgroud)