我正在使用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 索引可以加快查询速度。