如何从 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) ;
我对 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) ;