mongodb - 如何从postgres中的mongodb objectid中提取时间戳

标签 mongodb postgresql

在 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/

相关文章:

python - Heroku 使用 postgres 连接和 python 安排任务

sql - PostgreSQL - 从 bash 脚本查询数据库用户 'postgres'

postgresql - postgreSQL 9.3 中的动态表名

Spring 安全 : java. lang.ClassNotFoundException : org. springframework.dao.support.DaoSupport

javascript - 可以比较 mongodb 中的日期字符串吗?

MongoDB 将限制设置为 $inc

mongodb - Mongoose 全文搜索嵌套文档并填充选项

java - 如何在hibernate.cfg.xml中连接postgresql

django - 向现有的 django Mongoengine 模型添加了新的 bool 字段,但之后无法过滤该字段

java - Mongodb:无法保存添加到 BasicDBList 中的新元素