如何在Amazon Redshift查询中选择上一季度/最近2个月的数据

问题描述

我知道这是一个简单的问题,但是我刚刚开始探索Redshift,还无法在Google上找到答案。

在MSsql服务器中,我使用以下WHERE条款:

上季度:

WHERE DateTime>= DATEADD(qq,DATEDIFF(qq,GETDATE())-1,0) AND DateTime < DATEADD(qq,GETDATE())-0,0) 

过去2个月

WHERE DateTime>= DATEADD(mm,DATEDIFF(mm,GETDATE())-2,0) AND DateTime < DATEADD(mm,0)     

在本季度的Redshift中,我来到:

WHERE DateTime>= dateadd(qtr,datediff(qtr,'1970-01-01',current_date)-1,'1970-01-01') AND 
DateTime < dateadd(qtr,current_date)-0,'1970-01-01')    

在过去的两个月中,它看起来像:

WHERE DateTime>= dateadd(month,datediff(month,current_date)-2,'1970-01-01') AND 
DateTime < dateadd(month,'1970-01-01') 

因此,我必须使用unix纪元值而不是0。是否有更好的方法进行设置?

非常感谢您!

解决方法

在Redshift中,我将使用date_trunc()和区间算术。

上季度:

where datetime >= date_trunc('quarter',current_date) - interval '1 quarter'
  and datetime <  date_trunc('quarter',current_date)

最近两个月:

where datetime >= date_trunc('month',current_date) - interval '2 month'
  and datetime <  date_trunc('month',current_date)