在PostgreSQL选择查询中将时间戳列值转换为epoch

问题描述 投票:1回答:1

我需要在SELECT查询中将时间戳值转换为纪元。请查看以下样本表和预期结果。

样品表:

select * from log;
id        | 3
time      | 2016-03-30 18:44:19.189513
data1     | NONE
data3     | NONE
data4     | NONE

预期结果:

id        | 3
time      | 1459343659
data1     | NONE
data3     | NONE
data4     | NONE

日志表有n行。请找到以下版本的详细信息:

select version();

version                                            
----------------------------------------------------------------------------------------------
 PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.7.2-5) 4.7.2, 64-bit
sql postgresql datetime
1个回答
5
投票

使用extract()函数:

select id, extract(epoch from time) as time, 
       data1, data2,data3
from log;

显然你的列不是时间戳列,而是varchar,所以你首先需要将它转换为实时时间戳才能使用extract()

select id, 
       extract(epoch from time::timestamp) as time, 
       data1, data2,data3
from log;

这仅在该列中的所有值都具有正确的时间戳ISO格式时才有效。


这教你,你应该

never store date, timestamp or time values in a varchar column!

© www.soinside.com 2019 - 2024. All rights reserved.