postgresql - 有效存储小时、分钟和秒
问题描述
使用 PostgreSQL 数据库,以小时、分钟和秒为单位存储时间的最佳方式是什么。例如“40:21”,如40 分 21 秒。
示例数据:
20:21
1:20:02
12:20:02
40:21
解决方案
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)
推荐阅读
- autodesk-forge - forge Viewer - 如何以编程方式选择 dbId,因为它会自动取消选择其他选择
- r - knn 循环结果列表中的精度与实际 knn 精度不同
- vector - 如何在不创建新对象的情况下将向量向量转换为切片向量?
- azure-cosmosdb - 使用 Azure 数据工厂处理 Cosmos DB 中的每个项目
- git - 重新设置分支给我一个非快进错误
- java - EclipseLink 中的批量乐观锁定查询
- ios - UIButton 子类在没有 setTitleColor(_ , for state:) 的情况下更改标题颜色 [Swift]
- node.js - 在 WSL 上安装 twilio-cli
- php - 如何根据请求的子目录进行不同的 htaccess 重定向?
- c++ - 从持续时间构造 std::chrono::system_clock::time_point