0

我有一大堆关税,有些在周末工作,有些在工作日工作,有些则两者兼而有之。有时我会在 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是来自另一个表,与价格/星期几无关。

我知道我可以过date周末

SELECT * FROM tariff where EXTRACT(ISODOW FROM date) IN (6,7)

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

** 编辑 **

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

周末1是用于周末、工作日1、全天的资费。

4

1 回答 1

0

不能给你查询,提供任何查询。我们也不能确定 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)) 
           ) ;
于 2020-04-16T09:14:14.120 回答