MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment extraire l'horodatage de mongodb objectid dans postgres

Dans la documentation Mongodb l'Objectid est formé avec un horodatage comme les 4 premiers octets, mais cela est représenté en hexadécimal. En supposant que la valeur hexadécimale est stockée sous forme de chaîne dans PostgreSQL, la requête suivante extraira uniquement les 8 premiers caractères de cet objectid, le convertira en un entier (qui est en secondes à partir du 1970-01-01) puis convertira cet entier en un horodatage . Par exemple :

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
;

La conversion d'une chaîne hexadécimale en entier est abordée ici :Convertir l'hexadécimal dans la représentation textuelle en nombre décimal