如何从 Varchar 字符串转换为 Unix 时间类型?青梅

How do I go from Varchar string into Unix time type? Greenplum

我对 SQL 相当缺乏经验,更不用说 PostgreSQL 非常感谢您的帮助。

假设我们有一个名为 ID 的 varchar 列,它是 IP 地址和 unix 纪元时间字符串的组合。

所以当我 运行 这个查询时:

SELECT substring(b.id from char_length (r.IP_address)+2 for 10), b.id, r.ip_address
FROM bq b
INNER JOIN event r ON r.visitor_id::TEXT = b.id::TEXT 
LIMIT 3;

输出

substring   id  ip_address
1460854333  97.128.39.256.1460854333288493  97.128.39.256

所以子字符串的输出是一个unix时间戳,但它是varchar格式。如何将 varchar 转换为 unix 时间戳?最终我要将该时间戳转换为日期我只是认为我不能直接从 unix 字符串的 varchar 转换为日期?

正如Terra所说,使用to_timestamp()函数:

# select to_timestamp('1460854333') ;
      to_timestamp
------------------------
 2016-04-16 17:52:13-07
(1 row)

如果日期是您想要的类型,只需添加 ::date 转换:

# select to_timestamp('1460854333')::date ;
      to_timestamp
------------------------
 2016-04-16
(1 row)

函数基本上是这样执行的:

select ('epoch'::timestamptz + '1460854333'::float * '1 second'::interval) ;