2015-09-05 2 views
0

У меня есть модель мест, и вы хотите хранить часы работы в моем Postgres db. Я пытаюсь выработать лучший способ сделать это, чтобы я мог проверить, прошло ли время в любой день и отобразить, что место встречи закрыто. Первоначально я думал, что лучше хранить эти данные в виде строки, но полагал, что сравнивать с Time.now будет трудно. Есть ли у кого-нибудь какие-либо предложения о том, как лучше всего это достичь, а затем также перечислять дни, т.е. понедельник с 8:00 до 17:30, вторник с 8:00 до 17:30 и т. Д.Как лучше всего хранить торговые часы

+0

Почему бы вам просто не использовать тип времени PostgresSQL в соответствии с [Документами PostgresSQL] (http://www.postgresql.org/docs/9.4/static/datatype-datetime.html)? Или я что-то пропустил? –

ответ

0

Вы можете указать диапазоны времени в 4-значных целых числах , Например:

8:00am -> 800 
8:30am -> 830 
11:32 -> 1132 
8:30pm -> 2030 

Таким образом, выполнить запросы, основанные на временных диапазонах или других фильтрах, довольно просто.

В соответствии с представлением дня недели вы либо создаете столбец времени для каждой недели (ака 7 столбцов), либо создаете отдельную модель, которая представляет один день и содержит столбец для дня недели и время, и вы присоединяете их к отношениям «один ко многим» с моделью площадок.

Первый более простой, но последний более гибкий, особенно если вам нужно создавать более сложные запросы.

+0

Я бы не рекомендовал это. Какое время составляет 890, 8933 или 9999? –

+0

@JohannesThorn, если вы закончите с этими значениями, это означает, что у вас есть проблема в вашем приложении. Это не ошибка представления базы данных, это проблема с кодом, который неправильно проверяет ввод. –

+0

Я бы сказал, это зависит. Зачем полагаться на код, когда вы можете решить проблему проверки с помощью семантических типов SQL. –

Смежные вопросы