Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 将字符串时间戳转换为日期_Postgresql_Date_Timestamp_Type Conversion_Postgresql 9.1 - Fatal编程技术网

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

Postgresql 将字符串时间戳转换为日期,postgresql,date,timestamp,type-conversion,postgresql-9.1,Postgresql,Date,Timestamp,Type Conversion,Postgresql 9.1,我在postgres数据库中有日期。问题是它们存储在字符串字段中,并且具有类似于“1187222400000”的值(对应于07.08.2007)。 我想使用一些SQL to_date()表达式或类似的东西将它们转换为可读的日期,但无法找到正确的语法使其工作 这里真的没有足够的信息来得出结论,所以我建议用这个“科学的疯狂猜测”来解决你的难题。:) 这个数字似乎是UNIX的“纪元时间”(毫秒)。我将展示这个示例,就像您的字符串字段具有任意名称“epoch\u mili”。在postgresql中,可

我在postgres数据库中有日期。问题是它们存储在字符串字段中,并且具有类似于“1187222400000”的值(对应于07.08.2007)。
我想使用一些SQL to_date()表达式或类似的东西将它们转换为可读的日期,但无法找到正确的语法使其工作

这里真的没有足够的信息来得出结论,所以我建议用这个“科学的疯狂猜测”来解决你的难题。:)

这个数字似乎是UNIX的“纪元时间”(毫秒)。我将展示这个示例,就像您的字符串字段具有任意名称“epoch\u mili”。在postgresql中,可以使用以下语句将其转换为时间戳:

SELECT TIMESTAMP WITH TIME ZONE 'epoch' + epoch_milli * INTERVAL '1 millisecond';
或使用此:

选择时间戳(历元毫厘/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

当然,该值可能是一个转换值或与其他值相关,因此请求第二个示例数据点。

您可以提供第二个值及其相关日期吗?上面的“1187222400000”值是否实际对应于“2007-08-15 17:00:00”?这是可能的。我在另一个数据库中有相同的数据,其中只显示日期,但完全有可能在它后面还有一个时间答案。谢谢事实上,在CARTO中工作似乎有一些不同之处,但您的to_timestamp()给了我正确的方向。我必须先将其转换为biginger,然后再转换为timestamp,但结果是完美的:to_timestamp(NULLIF(date_字段“”)::bigint/1000)