【发布时间】:2019-02-13 19:38:09
【问题描述】:
我读到 PostgreSQL 在内部将时间戳存储为 8 字节/64 位整数。
为了检查这一点,我创建了一个表,插入了一些时间戳并查询了 heap_page_items。
输出例如时间戳 2019-01-08 09:00:00 是 00 e4 c2 56 ed 21 02 00。
给定这个十六进制序列,我如何手动计算自 PostgreSQL 纪元 (2000-01-01) 以来的微秒数?使用时间戳转换器,我得到了值 600253200000 作为结果。我如何必须“解包”字节才能接收此值?
【问题讨论】:
-
您为什么要这样做?
extract(epoch from ...)怎么了? -
我需要识别包含时间戳的大型索引(数百万个条目)的一系列原始页面以应用一些优化,例如预热 buffer_cache 等。除此之外,我对它的工作原理很感兴趣,因为我打算编写一些使用这种格式生成二进制文件的代码
标签: postgresql timestamp binary-data