date - 如何在 Amazon Redshift 查询中选择上个季度/最近 2 个月的数据
问题描述
我知道这是一个简单的问题,但我刚刚开始探索 Redshift,还无法通过谷歌搜索答案。
在 MSSQL 服务器中,我使用以下 WHERE CLAUSE:
上一季度:
WHERE DateTime>= DATEADD(qq,DATEDIFF(qq,0,GETDATE())-1,0) AND DateTime < DATEADD(qq,DATEDIFF(qq,0,GETDATE())-0,0)
过去 2 个月
WHERE DateTime>= DATEADD(mm,DATEDIFF(mm,0,GETDATE())-2,0) AND DateTime < DATEADD(mm,DATEDIFF(mm,0,GETDATE())-0,0)
在本季度的 Redshift 中,我出来:
WHERE DateTime>= dateadd(qtr,datediff(qtr,'1970-01-01',current_date)-1,'1970-01-01') AND
DateTime < dateadd(qtr,datediff(qtr,'1970-01-01',current_date)-0,'1970-01-01')
在过去的 2 个月中,它看起来像:
WHERE DateTime>= dateadd(month,datediff(month,'1970-01-01',current_date)-2,'1970-01-01') AND
DateTime < dateadd(month,datediff(month,'1970-01-01',current_date)-0,'1970-01-01')
所以,我必须使用 unix epoch 值而不是 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)
推荐阅读
- node.js - 我正在创建一个 Node.js 应用程序,我需要安装 ejs,但我无法安装它。它向我显示以下错误
- xaml - 使用 LoadFromXaml 加载 Xaml 的 Xamarin.Forms 不会为 StackLayout 创建包含的对象
- apache - 具有端口 443 的多个虚拟主机指向错误的目录
- angular - 在从其他网络单击的 Angular 应用程序中打开一个 url-path
- amazon-web-services - 为什么我的 Fargate 任务卡在待处理状态?
- python - Python:只要组包含任何特定值,我如何过滤数据
- python - 烧瓶问题:RuntimeError:会话不可用,因为没有设置密钥
- vue.js - 类星体显示资产或静态文件夹中的文本/降价
- html - Netlify 删除 .html 上的 url slug
- c# - 使用 .NET Core 3.1 中的 System.Drawing.Bitmap