Postgresql 将字符串时间戳转换为日期
我在postgres数据库中有日期。问题是它们存储在字符串字段中,并且具有类似于“1187222400000”的值(对应于07.08.2007)。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中,可
我想使用一些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)