将字符串时间戳转换为日期

时间:2017-02-01 19:38:41

标签: postgresql date timestamp type-conversion postgresql-9.1

我在postgres数据库中有约会。问题是它们存储在字符串字段中,其值类似于:" 1187222400000" (相当于07.08.2007)。 我想将它们转换为可读日期,使用一些SQL to_date()表达式或类似的东西,但不能提出正确的语法使其工作。

1 个答案:

答案 0 :(得分:1)

这里确实没有足够的信息可以得出结论,所以我提出了这个'科学狂野的猜测'解决你的难题。 :)

出现此号码 UNIX'纪元时间'以毫秒为单位。我将此示例显示为您的字符串字段具有任意名称,' epoch_milli'。在postgresql中,您可以使用以下语句将其转换为时间戳:

SELECT TIMESTAMP WITH TIME ZONE 'epoch' + epoch_milli * INTERVAL '1 millisecond';

或使用此built-in postgresql function

SELECT to_timestamp(epoch_milli / 1000)

其中任何一个,例如 1187222400000',都会产生结果

"2007-08-15 17:00:00-07"

您可以使用与此相似的几个值进行自己的调查:

SELECT to_timestamp(epoch_milli/1000)::DATE
FROM (VALUES (1187222400000),(1194122400000)) AS val(epoch_milli);

"嗯,笨蛋,伙计。我只想要约会。"要点。

只需将时间戳转换为日期以丢弃多余的位:

SELECT to_timestamp(epoch_milli / 1000)::DATE

当然,这个值可能是转换或相对于其他某个值,因此请求第二个示例数据点。