sql >> Databáze >  >> NoSQL >> MongoDB

Jak extrahovat časové razítko z mongodb objectid v postgresu

V dokumentaci Mongodb Objectid je tvořeno časovým razítkem jako první 4 bajty, ale toto je znázorněno v hexadecimální soustavě. Za předpokladu, že hexadecimální hodnota je uložena jako řetězec v PostgreSQL, pak následující dotaz extrahuje pouze prvních 8 znaků tohoto objectid, převede to na celé číslo (což jsou sekundy od 1970-01-01) a poté převede toto celé číslo na časové razítko . Například:

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
;

Převod hexadecimálního řetězce na celé číslo je diskutován zde:Převést hex v textové reprezentaci na desítkové číslo



  1. mongoose rozdíl findOneAndUpdate a update

  2. připojení k Mongodb uvnitř dockeru s mongodb kompasem GUI

  3. Jak mohu použít mongodb s elektronem?

  4. Jak vložit pole objektů do pole v mongoose jedním voláním?