按不同的时间间隔过滤数据

时间:2012-11-06 11:11:06

标签: postgresql

我需要以不同的时间间隔过滤我的查询:

...
where
date >= '2011-07-01' and date <='2011-09-30'
and date >='2012-07-01' and date >='2012-09-30'

我认为这样的代码不好,因为这些日期相互冲突。但是如何只过滤这两个间隔,跳过其他一切?它甚至可能吗?因为如果我这样查询,我没有得到任何结果。我试图使用BETWEEN,但它做同样的事情。

我通过从年份中提取季度并仅计算第三季度来绕过这一点。但是其他季度总和显示为零,我不能忽略这些具有零值的总和列的行。我试图过滤price > 0(总和所在的列)的位置,但它表示该列不存在。所以我把整个FROM放在'('')'括号下,使它在where子句之前计算总和,但它确实给了我错误,这个列不存在。

此外,如果您需要查看我现在的查询,我可以发布,只需告诉我是否需要。

我想这样做,因为我需要比较两个不同年份的第三季度(也许我应该使用另一种方法)。

1 个答案:

答案 0 :(得分:1)

您不会得到任何结果,因为您的日期不会在2011年7月1日至9月30日之间以及2012年7月1日之后和2012年9月30日之后。< / p>

您可以在7/1/20122和9/30/2011之间 的日期在2012年7月1日至2012年9月30日之间

SELECT col1 FROM table1
WHERE date BETWEEN '7/1/2011' AND '9/30/2011' OR date BETWEEN '7/1/2012' AND '9/30/2012';