sql >> Database >  >> NoSQL >> MongoDB

Hoe tijdstempel te extraheren uit mongodb objectid in postgres

In Mongodb-documentatie de Objectid wordt gevormd met een tijdstempel als de eerste 4 bytes, maar dit wordt hexadecimaal weergegeven. Ervan uitgaande dat de hexadecimale waarde wordt opgeslagen als een tekenreeks in PostgreSQL, dan zal de volgende query alleen de eerste 8 tekens van die object-id extraheren, dat omzetten in een geheel getal (dat is seconden van 1970-01-01) en dat geheel getal vervolgens converteren naar een tijdstempel . Bijvoorbeeld:

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
;

Het converteren van een hexadecimale string naar een geheel getal wordt hier besproken:Converteer hex in tekstweergave naar decimaal getal



  1. hoe om te gaan met de verbindingsfout voor MongoDB

  2. Negeer speciale tekens vóór de wedstrijdvoorwaarden

  3. Meerdere documenten verzenden met RMongo

  4. PyMongo:hoe aggregaat gebruiken en de resultaten opslaan in een andere verzameling?