到目前为止的日期到毫秒/毫秒

时间:2014-08-19 13:13:03

标签: sql postgresql date timestamp milliseconds

我有一个以毫秒为单位的日期。通过以下方式获得:

SELECT EXTRACT(MILLISECONDS FROM NOW())

如何再次恢复日期?

我试过了:

SELECT TO_TIMESTAMP(EXTRACT(MILLISECONDS FROM NOW()))

以上在1970年返回日期......

2 个答案:

答案 0 :(得分:1)

EXTRACT不会以毫秒为单位获取日期。 我认为这应该有效:

SELECT EXTRACT(EPOCH FROM NOW()) * 1000;
SELECT TO_TIMESTAMP(EXTRACT(EPOCH FROM NOW()))

Found here

答案 1 :(得分:1)

EXTRACT(MILLISECONDS ...)得到你(per documentation)...

  

秒字段(包括小数部分)乘以1000。   请注意,这包括整秒。

只需测试:

SELECT now(), EXTRACT(MILLISECONDS FROM NOW()) AS millisec;

其余的是in the manual as well

  

历元

     

对于timestamp with time zone值,自1970-01-01 00:00:00 UTC以来的秒数(可以是负数); datetimestamp   值,当地时间1970-01-01 00:00:00以来的秒数;   对于interval值,区间中的总秒数

SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40.12-08');
*Result: 982384720.12*

SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours');
*Result: 442800*
     

以下是将纪元值转换回时间戳的方法:

SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 982384720.12 * INTERVAL '1 second';
     

to_timestamp函数封装了上述转换。)