sql - 如何存储工作日并检查日期是否与当天匹配
问题描述
我正在使用 postgres 并试图了解如何存储和查询工作日。
我的users
表上有一个名为 working_days
int 数组的属性。
如果一个人只在周一和周三工作,那么我将存储[0, 2]
如果我想知道哪些用户可以在“今天”(恰好是星期二)工作,我想找到working_hours
拥有[1]
.
如何从日期中获取日期,有没有更好的方法来做到这一点?
解决方案
SELECT *
FROM users
WHERE working_days &&
ARRAY[
CAST((extract(dow FROM current_timestamp) + 1) % 7
AS integer
)
];
这将“数组重叠”运算符&&
与从当前工作日构造的单元素数组一起使用。
一个 GIN 索引working_days
可以加快查询速度。
推荐阅读
- svelte - Svelte 如何在每个循环中处理更新数组中的对象
- loopbackjs - Loopback 4 cli 指令语言 - 如何重置
- grep - 如何使用 grep 匹配文件?
- php - 如何将 Droplet 与 PhpStorm 连接
- tailwind-css - 变体悬停在 TailwindCss 中不适用
- spring-boot - 未使用 @MapsId 找到父键
- android - 我正在 Glide 中加载图像,但如果 url 包含空格,Glide 将无法工作
- javascript - 简单的 Javascript 幻灯片(所以我知道),获取下一张幻灯片属性以在当前幻灯片中显示
- javascript - 如何在单击输入类型提交后使页面不重新加载并且不打开php页面?
- javascript - async / await 链接何时停止?