【发布时间】:2017-11-27 16:23:37
【问题描述】:
我正在开发一个具有多种不同价格的预订平台。这些费率由一天中的时间、一周中的一天和一年中的一天决定。以下是所涉及的区间类型的一些示例:
- 周一至周五,上午 9 点至下午 5 点
- 周六和周日,上午 12 点至上午 9 点
- 周六和周日,上午 9 点到下午 5 点
- 周六和周日,下午 5 点至凌晨 12 点
- 12 月 23 日和 24 日,随时
- 12 月 26 日和 27 日,随时
表示这一点的最佳方式是什么,以便可以查询任何一天的不同有效汇率?
目前,我所做的方法是使用两个数组类型列,days_of_week[] 和 hours_of_day[],用每个费率适用的天数/小时填充它们。考虑到像 12 月这样的特殊情况,我还有字段 valid_from 和 invalid_after,但是这需要每年都有一个新条目。
我已经查看了间隔的日期时间函数和here,但没有看到任何看起来可以解决这个问题的东西。
【问题讨论】:
-
查看Range Types中的tstzrange。
-
tstzrange 看起来像是针对特定间隔的范围(例如 1 月 10 日至 20 日),而不是更通用的任何一个月的 10 日至 20 日
-
和多个OR在哪里不起作用?
标签: sql postgresql date