MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come estrarre timestamp da mongodb objectid in postgres

Nella documentazione Mongodb l'Objectid è formato con un timestamp come i primi 4 byte, ma questo è rappresentato in esadecimale. Supponendo che il valore esadecimale sia memorizzato come una stringa in PostgreSQL, la query seguente estrarrà solo i primi 8 caratteri di quell'id oggetto, lo convertirà in un numero intero (che è secondi da 1970-01-01) quindi convertirà quel numero intero in un timestamp . Ad esempio:

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 conversione di una stringa esadecimale in numero intero è discussa qui:Converti esadecimale nella rappresentazione testuale in numero decimale