MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como extrair timestamp do mongodb objectid no postgres


Na documentação do Mongodb o Objectid é formado com um timestamp como os primeiros 4 bytes, mas isso é representado em hexadecimal. Supondo que o valor hexadecimal seja armazenado como uma string no PostgreSQL, a consulta a seguir extrairá apenas os primeiros 8 caracteres desse objectid, converterá isso em um inteiro (que são segundos de 1970-01-01) e converterá esse inteiro em um timestamp . Por exemplo:
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
;

A conversão de uma string hexadecimal em inteiro é discutida aqui:Converter hexadecimal na representação de texto em número decimal