首页 > 解决方案 > 如何存储工作日并检查日期是否与当天匹配

问题描述

我正在使用 postgres 并试图了解如何存储和查询工作日。

我的users表上有一个名为 working_daysint 数组的属性。

如果一个人只在周一和周三工作,那么我将存储[0, 2]

如果我想知道哪些用户可以在“今天”(恰好是星期二)工作,我想找到working_hours拥有[1].

如何从日期中获取日期,有没有更好的方法来做到这一点?

标签: sqlpostgresql

解决方案


SELECT *
FROM users
WHERE working_days &&
      ARRAY[
         CAST((extract(dow FROM current_timestamp) + 1) % 7
               AS integer
         )
      ];

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

一个 GIN 索引working_days可以加快查询速度。


推荐阅读