使用PostgreSQL数据库,以小时,分钟和秒为单位存储时间的最佳方式是什么 . 例如 . "40:21"在40分21秒 .
示例数据:
20:21 1:20:02 12:20:02 40:21
听起来你想存储一段时间或间隔 . PostgreSQL有一种特殊的间隔类型来存储一段时间,例如:
SELECT interval'2 hours 3 minutes 20 seconds';
这可以添加到时间戳中以形成新的时间戳,或者乘以(使得(2 * interval'2 hours')= interval'4 hours' . 间隔类型似乎是针对您的用例量身定制的 .
time将是您描述时间的明显候选人 . 它强制执行每日时间范围( 00:00:00 到 24:00:00 )并占用 8 bytes .或 time(0) 禁止小数秒 .
00:00:00
24:00:00
time(0)
interval 允许任意间隔,甚至是负面间隔,甚至是正面和负面的混合,如 '1 month - 3 seconds' - 不适合你的描述 - 并占据 16 bytes . 看到:
'1 month - 3 seconds'
如果要优化存储大小,请将其设为 integer ( 4 bytes ),表示秒数 . 要转换 time 前后:
time
SELECT EXTRACT(epoch FROM time '18:55:28'); -- 68128 (int) SELECT time '00:00:01' * 68128; -- '18:55:28' (time)
2 回答
听起来你想存储一段时间或间隔 . PostgreSQL有一种特殊的间隔类型来存储一段时间,例如:
这可以添加到时间戳中以形成新的时间戳,或者乘以(使得(2 * interval'2 hours')= interval'4 hours' . 间隔类型似乎是针对您的用例量身定制的 .
time将是您描述时间的明显候选人 . 它强制执行每日时间范围(
00:00:00
到24:00:00
)并占用 8 bytes .或
time(0)
禁止小数秒 .interval 允许任意间隔,甚至是负面间隔,甚至是正面和负面的混合,如
'1 month - 3 seconds'
- 不适合你的描述 - 并占据 16 bytes . 看到:如果要优化存储大小,请将其设为 integer ( 4 bytes ),表示秒数 . 要转换
time
前后: