在 PostgreSQL 中执行操作时间查询
在 PostgreSQL 中,您可以执行查询来查找所有“打开”的记录使用日期和时间比较的组合来指定操作时间。但是,这种方法可能会变得复杂,尤其是在周末的情况下。
使用 tsrange 类型的建议解决方案
要简化和优化此查询,您可以重新设计该表,将营业时间存储为一组 tsrange(不含时区的时间戳范围)值。这需要 PostgreSQL 版本 9.2 或更高版本,并涉及以下步骤:
表布局:
示例数据:
CREATE TABLE hoo ( hoo_id serial PRIMARY KEY , shop_id int NOT NULL , hours tsrange NOT NULL );
INSERT INTO hoo(shop_id, hours) VALUES (123, '[1996-01-03 18:30, 1996-01-04 05:00]');
排除约束:
辅助函数:
优化查询:
使用新的表结构和辅助函数,您可以可以简化您的查询到:
SELECT * FROM hoo WHERE hours @> f_hoo_time(now());
优点:
以上是PostgreSQL 的'tsrange”类型如何优化营业时间的查询?的详细内容。更多信息请关注PHP中文网其他相关文章!