Amazon Redshift:比较日期的最佳方式

unt*_*led 5 postgresql amazon-web-services amazon-redshift

我有一个redshift示例表.我想生成一份包含月份数据的报告.到目前为止我找到了以下三种方法.

 1. trunc(created_at_date) between '2014-06-01' and '2014-06-30';
 2. created_at_date like '2014-06%'
 3. created_at_date >= '2014-06-01 00:00:00' and created_at_date <= '2014-06-30 23:59:59'
Run Code Online (Sandbox Code Playgroud)

这样做的最佳和最佳方式是什么?

小智 6

不是第一个,因为它执行不必要的截断(除非您确实有此类未处理的数据)。

 1. trunc(created_at_date) between '2014-06-01' and '2014-06-30';
Run Code Online (Sandbox Code Playgroud)

出于明显的原因,绝对不是这个(比如)

 2. created_at_date like '2014-06%'
Run Code Online (Sandbox Code Playgroud)

可能是这个:

 3. created_at_date >= '2014-06-01 00:00:00' and created_at_date <= '2014-06-30 23:59:59'
Run Code Online (Sandbox Code Playgroud)

但是,由于要求是生成每月报告,我认为这是一项针对多个数据源的重复任务,因此我建议创建一个一次性日历表。

该表将日期映射到月份值,然后您只需将源数据与该表连接并按“月份”列进行分组即可。

PS 刚刚意识到我回答了一个非常“古老”的问题:p


小智 2

怎么样

created_at_date between to_date('20140601','YYYYMMDD') and to_date('20140630','YYYYMMDD') 
Run Code Online (Sandbox Code Playgroud)