仅根据周末/工作日/两者的标志获取行

Only get rows based on flag for weekend / weekday / both

我有一大堆关税,有些在周末工作,有些在工作日工作,有些两者兼而有之。有时我会在 NOW() 上查询,但有时我会在 datetime 列上查询。

id   | Weekday | Weekend | Price
 1   | 1       | 0       | 0.04   
 2   | 0       | 1       | 0.02          

date
2020-04-15 00:00:00
2012-04-16 00:00:00

date 来自另一个 table,与价格/星期几无关。

我知道我可以在

之前得到周末 date
SELECT * FROM tariff where EXTRACT(ISODOW FROM date) IN (6,7)

但是我想不出如何获取周末/工作日或两者都给定日期的行。

** 编辑 **

更新了 table 以显示日期是分开的。我想要获得的是与 table 中的日期相对应的关税,无论是工作日还是周末(或两者兼而有之,但我可以推断)。

周末1是周末使用的资费,工作日1,所有天都是。

无法给您查询,请提供任何查询。我们也不能确定 Weekday 和 Weekend 列的含义与您没有告诉我们的一样。但是,如果我们将它们作为布尔值指示符,其中 1 表示需要,那么类似的东西可能对您有用。

    select ...
      from ...
     where ...
       and (   (weekday = 1 and weekend =1) 
            or (weekday = 1 and extract(isodow from date) not in (6,7))
            or (weekend = 1 and extract(isodow from date)    in (6,7)) 
           ) ;