如何存储工作日并检查日期是否与该日期匹配



我正在使用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
)
];

这使用"数组重叠"运算符&&与从当前工作日构造的单元素数组。

working_days上的 GIN 索引可以加快查询速度。

最新更新