首页 > 解决方案 > 有效存储小时、分钟和秒

问题描述

使用 PostgreSQL 数据库,以小时、分钟和秒为单位存储时间的最佳方式是什么。例如“40:21”,如40 分 21 秒

示例数据:

   20:21
 1:20:02
12:20:02
   40:21

标签: postgresqltimetypes

解决方案


time正如您所描述的那样,将是存储时间的明显候选者。它强制执行每日时间范围(00:00:0024:00:00)并占用8 个字节

interval允许任意间隔,甚至是负数,甚至是正数和负数的混合,例如'1 month - 3 seconds'- 不太适合您的描述 - 并且占用16 个字节。看:

要优化存储大小,请将其设为integer4 字节)表示秒。time来回转换:

SELECT EXTRACT(epoch FROM time '18:55:28');  -- 68128 (int)    
SELECT time '00:00:01' * 68128;              -- '18:55:28' (time)

推荐阅读