sql - 如何存储计划时间块并对其进行查询?
问题描述
我正在使用 postgres 并想知道如何以允许我执行以下操作的方式存储计划时间块:
如果我有一个包含 3 个时间段的时间表:
- 周一上午 8 点至下午 12 点
- 周一上午 10 点至下午 4 点
- 星期四上午 8 点至下午 12 点
我正在尝试查找周一到周三早上 8 点开始的所有时间表。
我将 time_blocks 存储为array
,但我不确定如何查询它们。
解决方案
我建议三列:
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"
推荐阅读
- python - 视频处理帧值不能在 OpenCv Python 的主要功能中使用
- c# - 将 SQL Server 表中的所有项目插入 SharePoint 列表时遇到问题
- gnuplot - 带有误差线和回归线的 Gnuplot
- linux - Kubernetes Pod:无法获得 D-Bus 连接
- c# - 运行时无法加载文件或程序集“Newtonsoft.Json,版本=6.0.0.0 ...”,间接依赖程序集继续寻找旧版本
- angular - 如何处理 Google recaptcha 后端验证响应延迟
- reactjs - 如何从对象中获取值并将它们分配给 consts
- ansible - 如何从 ansibles 查找模块中获取文件路径
- php - 在 PHP 多维数组中使用 USORT 后如何添加新的密钥
- cordova - Html5页面onload功能在没有页面刷新的情况下不起作用