如何存储计划时间块并对其进行查询?
How to store schedule time blocks and query against them?
我正在使用 postgres 并想知道我应该如何以允许我执行以下操作的方式存储计划时间块:
如果我有一个包含 3 个时间段的时间表:
- 周一上午 8 点到中午 12 点
- 周一上午 10 点到下午 4 点
- 星期四上午 8 点到中午 12 点
我正在尝试查找周一至周三上午 8 点开始的所有时间表。
我将 time_blocks 存储为 array
,但我不确定如何查询它们。
我建议三列:
dow
- 整数或字符串形式的星期几。两者都可以,整数最适合存储和性能。 (0 - 6;星期日为 0)
from
- time
类型、时间
to
- time
类型、时间
那么你可以select这样:
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"
我正在使用 postgres 并想知道我应该如何以允许我执行以下操作的方式存储计划时间块:
如果我有一个包含 3 个时间段的时间表:
- 周一上午 8 点到中午 12 点
- 周一上午 10 点到下午 4 点
- 星期四上午 8 点到中午 12 点
我正在尝试查找周一至周三上午 8 点开始的所有时间表。
我将 time_blocks 存储为 array
,但我不确定如何查询它们。
我建议三列:
dow
- 整数或字符串形式的星期几。两者都可以,整数最适合存储和性能。 (0 - 6;星期日为 0)from
-time
类型、时间to
-time
类型、时间
那么你可以select这样:
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"