首页 > 解决方案 > 如何存储计划时间块并对其进行查询?

问题描述

我正在使用 postgres 并想知道如何以允许我执行以下操作的方式存储计划时间块:

如果我有一个包含 3 个时间段的时间表:

  1. 周一上午 8 点至下午 12 点
  2. 周一上午 10 点至下午 4 点
  3. 星期四上午 8 点至下午 12 点

我正在尝试查找周一到周三早上 8 点开始的所有时间表。

我将 time_blocks 存储为array,但我不确定如何查询它们。

标签: sqlpostgresqldata-modeling

解决方案


我建议三列:

  • 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"


推荐阅读