Как хранить временные блоки расписания и запрашивать их? - PullRequest
0 голосов
/ 18 апреля 2020

Я использую postgres и задаюсь вопросом, как мне хранить временные блоки расписания таким образом, чтобы я мог делать следующее:

Если у меня есть расписание с 3 временными блоками:

  1. понедельник с 8:00 до 12:00
  2. понедельник с 10:00 до 16:00
  3. четверг с 8:00 до 12:00 * 10101 *

И я пытаюсь найти все расписания между понедельником и средой, которые начало в 8 утра. * 10101 *

Я храню временные блоки как array, и я не уверен, как их запросить.

1 Ответ

1 голос
/ 19 апреля 2020

Я предлагаю три столбца:

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

...