sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man extraherar tidsstämpel från mongodb objectid i postgres

I Mongodb-dokumentation Objektid är format med en tidsstämpel som de första 4 byten, men detta representeras i hexidecimal. Om vi ​​antar att hexidecimalt värde lagras som en sträng i PostgreSQL, kommer följande fråga att extrahera bara de första 8 tecknen i det objekt-id, konvertera det till ett heltal (vilket är sekunder från 1970-01-01) och sedan konvertera det heltal till en tidsstämpel . Till exempel:

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
;

Konvertering av en hexadecimal sträng till heltal diskuteras här:Konvertera hex i textrepresentation till decimaltal



  1. MongoClient fungerar inte med php

  2. Med mongoDB C#-drivrutinen, hur utfärdar jag en runCommand?

  3. Max och grupp med i Mongodb

  4. Redis vs. Memcached – Jämförelse 2021