首页 文章

有效地存储小时,分钟和秒

提问于
浏览
0

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

示例数据:

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

2 回答

  • 2

    听起来你想存储一段时间或间隔 . PostgreSQL有一种特殊的间隔类型来存储一段时间,例如:

    SELECT interval'2 hours 3 minutes 20 seconds';
    

    这可以添加到时间戳中以形成新的时间戳,或者乘以(使得(2 * interval'2 hours')= interval'4 hours' . 间隔类型似乎是针对您的用例量身定制的 .

  • 1

    time将是您描述时间的明显候选人 . 它强制执行每日时间范围( 00:00:0024:00:00 )并占用 8 bytes .
    time(0) 禁止小数秒 .

    interval 允许任意间隔,甚至是负面间隔,甚至是正面和负面的混合,如 '1 month - 3 seconds' - 不适合你的描述 - 并占据 16 bytes . 看到:

    如果要优化存储大小,请将其设为 integer4 bytes ),表示秒数 . 要转换 time 前后:

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

相关问题