Ваш анализ почти идеален, и вы должны быть на машине с прямым порядком байтов.
Вам не нужно распаковывать значение, потому что в вашей 64-битной архитектуре 8-байтовые целые числа могут вписываться вa PostgreSQL Datum
.
SELECT extract(epoch FROM TIMESTAMP '2019-01-08 09:00:00')
- extract(epoch FROM TIMESTAMP '2000-01-01 00:00:00');
?column?
-----------
600253200
(1 row)
600253200 секунд - 600253200000000 микросекунд.
Целое число, которое вы видите в таблице, равно 0x000221ed56c2e400, что соответствует десятичному 600253200000000:
bash> printf "%ld\n" 0x000221ed56c2e400
600253200000000