MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So extrahieren Sie den Zeitstempel aus der Mongodb-Objekt-ID in Postgres

In Mongodb-Dokumentation die Objectid wird mit einem Zeitstempel als den ersten 4 Bytes gebildet, dieser wird jedoch hexadezimal dargestellt. Unter der Annahme, dass der Hexadezimalwert als Zeichenfolge in PostgreSQL gespeichert ist, extrahiert die folgende Abfrage nur die ersten 8 Zeichen dieser Objekt-ID, konvertiert diese in eine Ganzzahl (die Sekunden seit dem 1.1.1970 sind) und konvertiert diese Ganzzahl dann in einen Zeitstempel . Zum Beispiel:

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
;

Das Konvertieren einer hexadezimalen Zeichenfolge in eine ganze Zahl wird hier besprochen: Hex in Textdarstellung in Dezimalzahl umwandeln