sql >> データベース >  >> NoSQL >> MongoDB

postgresでmongodbobjectidからタイムスタンプを抽出する方法

    Mongodbドキュメント Objectidは、最初の4バイトとしてタイムスタンプを使用して形成されますが、これは16進数で表されます。 16進値がPostgreSQLに文字列として格納されていると仮定すると、次のクエリはそのオブジェクトIDの最初の8文字だけを抽出し、それを整数(1970-01-01からの秒数)に変換してから、その整数をタイムスタンプに変換します。 。例:

    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
    ;
    

    16進文字列の整数への変換については、ここで説明します:テキスト表現の16進数を10進数に変換



    1. OSXでHomebrewを使用したPHP72MongoDBドライバー

    2. ソートされたセットとuidを保存するための最良の方法をRedisします

    3. PHPを使用したMongoDBISODateクエリ

    4. SQLで短い月の名前を取得する方法