【发布时间】:2018-12-09 02:13:21
【问题描述】:
使用 PostgreSQL 数据库,以小时、分钟和秒为单位存储时间的最佳方式是什么。例如。 "40:21" 表示 40 分 21 秒。
示例数据:
20:21
1:20:02
12:20:02
40:21
【问题讨论】:
标签: postgresql time types
使用 PostgreSQL 数据库,以小时、分钟和秒为单位存储时间的最佳方式是什么。例如。 "40:21" 表示 40 分 21 秒。
示例数据:
20:21
1:20:02
12:20:02
40:21
【问题讨论】:
标签: postgresql time types
time 显然是您描述的存储时间的候选者。它强制执行每日时间范围(00:00:00 到 24:00:00)并占用 8 个字节。
interval 允许任意间隔,甚至是负数,甚至像'1 month - 3 seconds' 这样的正负混合 - 不太符合您的描述 - 占用 16 个字节。见:
要优化存储大小,请将其设为 integer(4 字节)表示秒。来回转换time:
SELECT EXTRACT(epoch FROM time '18:55:28'); -- 68128 (int)
SELECT time '00:00:01' * 68128; -- '18:55:28' (time)
【讨论】:
听起来您想存储一段时间或间隔。 PostgreSQL 有一个特殊的间隔类型来存储时间长度,例如
SELECT interval'2 hours 3 minutes 20 seconds';
这可以添加到时间戳以形成新的时间戳,或者相乘(这样(2 * 间隔'2 小时')= 间隔'4 小时'。间隔类型似乎是为您的使用量身定制的案例。
【讨论】: