【问题标题】:How to store schedule time blocks and query against them?如何存储计划时间块并对其进行查询?
【发布时间】:2020-07-31 15:05:27
【问题描述】:

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

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

  1. 周一上午 8 点至下午 12 点
  2. 周一上午 10 点至下午 4 点
  3. 星期四上午 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"

    【讨论】:

      猜你喜欢
      • 2016-03-24
      • 2010-12-20
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      相关资源
      最近更新 更多