4

我需要在一个地方将时间戳转换为字符串或其他东西,然后在另一个地方将其转换回时间戳。我尝试了以下。但我有点不同。当我将其转换回时间戳时,最后一位数字丢失了。

SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2013-09-27 13:51:02.809501+05:30');
SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 1380270062809.5 * INTERVAL '1 millisecond';

结果是……"2013-09-27 13:51:02.8095+05:30"

4

1 回答 1

6

你可以试试:

首先提取整秒

floor(EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2013-09-27 13:51:02.809501+05:30'))

然后添加微秒

to_char('2013-09-27 13:51:02.809501+05:30'::timestamp, '.US'),

完整表达:

SELECT floor(EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2013-09-27 13:51:02.809501+05:30')) || to_char('2013-09-27 13:51:02.809501+05:30'::timestamp, '.US')

来源: http: //grokbase.com/t/postgresql/pgsql-general/076ercxb4w/precision-of-epoch

于 2013-09-30T04:52:43.657 回答