仅根据周末/工作日/两者的标志获取行
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))
) ;
我有一大堆关税,有些在周末工作,有些在工作日工作,有些两者兼而有之。有时我会在 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))
) ;