我有一个应用程序(PostgreSQL9.6正在迁移到10上),在该应用程序中,我希望在表中检索结果,同时匹配存储在该表中的开放时间。
让我们用一个虚构的例子来解释:我有一张商店表:
store_name | opening_hours
-----------------+-----------------------------
storeA | ((wday between 1 and 5) and (hour between 10 and 20))
storeB | ((wday between 2 and 5) and (hour between 9 and 18)) OR (wday in (6,7) and (hour between 9 and 12))我想查询这个表,并从查询时起抓取打开的商店(没有时区干扰)。(谁在乎谁:在我的国家,每周的第一天是星期一,但在这个例子中我们不关心):
你能帮我把这个小东西修好吗?我想我只是错过了正确的写法。
编辑:“开放时间”只是用来记录我想要解决这个问题的方式。无论如何,我都不会在这个数据库中添加一些新表。这里搜索的唯一答案是计算存储在表中的表达式的方法。
发布于 2018-07-23 14:29:51
由于您对建议持开放态度,我建议您看看这个问题的公认答案:Best way to store working hours and query it efficiently
您当前的表结构将很难管理。如果您修改了表的结构以匹配上面所接受的答案,这正是您所需要的,并且会使查询变得非常简单。
编辑:为了完整性,链接中建议的表结构是:
要存储正常的操作时间,您需要存储一些记录,其中包括:
https://stackoverflow.com/questions/51480859
复制相似问题