在 MongoDB 中,您可以使用 getTimestamp() 函数从 ObjectId 中检索日期。我如何使用 Postgresql 从 MongoDB ObjectId 中检索日期(例如,如果这样的 ObjectId 存储在 Postgres 数据库中)?
示例输入:
507c7f79bcf86cd7994f6c0e
想要的输出:
2012-10-15T21:26:17Z
最佳答案
在Mongodb documentation Objectid 的前 4 个字节是时间戳,但它以十六进制表示。假设十六进制值在 PostgreSQL 中存储为字符串,那么以下查询将仅提取该 objectid 的前 8 个字符,将其转换为整数(从 1970-01-01 开始的秒数),然后将该整数转换为时间戳.例如:
SELECT TO_TIMESTAMP(int_val) ts_val
FROM (
SELECT ('x' || lpad(left(objectid,8), 8, '0'))::bit(32)::int AS int_val
FROM (
VALUES ('507c7f79bcf86cd7994f6c0e')
) AS t1(objectid)
) AS t2
;
这里讨论将十六进制字符串转换为整数: Convert hex in text representation to decimal number
关于mongodb - 如何从postgres中的mongodb objectid中提取时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45990497/