【问题标题】:How to store schedule time blocks and query against them?如何存储计划时间块并对其进行查询?
【发布时间】:2020-07-31 15:05:27
【问题描述】:
我正在使用 postgres,想知道如何以允许我执行以下操作的方式存储计划时间块:
如果我有一个包含 3 个时间段的时间表:
- 周一上午 8 点至下午 12 点
- 周一上午 10 点至下午 4 点
- 星期四上午 8 点到下午 12 点
我正在尝试查找周一至周三早上 8 点开始的所有时间表。
我将 time_blocks 存储为array,但我不知道如何查询它们。
【问题讨论】:
标签:
sql
postgresql
data-modeling
【解决方案1】:
我建议三栏:
-
dow - 以整数或字符串表示的星期几。两者都可以,整数最适合存储和性能。 (0 - 6;周日为 0)
-
from - time 类型、时间
-
to - time 类型、时间
那么你可以这样选择:
SELECT
*
FROM
"schedule"
WHERE
-- Mon, Tue, Wed
"dow" IN (1,2,3) AND
'08:00:00'::time = "from"
您可以通过以下方式搜索上午 8 点或更早:
'08:00:00'::time BETWEEN "from" AND "to"