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進数に変換