【问题标题】:Storing hours, minutes and seconds effectively有效存储小时、分钟和秒
【发布时间】:2018-12-09 02:13:21
【问题描述】:

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

示例数据:

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

【问题讨论】:

标签: postgresql time types


【解决方案1】:

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)

【讨论】:

    【解决方案2】:

    听起来您想存储一段时间或间隔。 PostgreSQL 有一个特殊的间隔类型来存储时间长度,例如

    SELECT interval'2 hours 3 minutes 20 seconds';
    

    这可以添加到时间戳以形成新的时间戳,或者相乘(这样(2 * 间隔'2 小时')= 间隔'4 小时'。间隔类型似乎是为您的使用量身定制的案例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      相关资源
      最近更新 更多