【问题标题】:Amazon Redshift : Best way to compare datesAmazon Redshift:比较日期的最佳方式
【发布时间】:2015-03-26 00:33:30
【问题描述】:
我有一个红移示例表。我想生成一个包含月份数据的报告。到目前为止,我找到了以下三种方式。
-
trunc(created_at_date) between '2014-06-01' and '2014-06-30'
-
created_at_date like '2014-06%'
-
created_at_date >= '2014-06-01 00:00:00' and created_at_date <= '2014-06-30 23:59:59'
这样做的最佳和最佳方式是什么?
【问题讨论】:
标签:
sql
date
amazon-redshift
【解决方案1】:
我更喜欢第四种方式:
date_trunc('month', created_at_date) = '2014-06-01'
【解决方案2】:
怎么样
created_at_date between to_date('20140601','YYYYMMDD') and to_date('20140630','YYYYMMDD')
【解决方案3】:
不是第一个,因为它执行不必要的截断(除非你真的有这样未处理的数据)。
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'
但是,由于要求生成月度报告,我认为这是一项重复性任务并且涉及多个数据源,因此我建议创建一个一次性日历表。
此表将日期映射到月份值,然后您可以简单地将源数据与该表连接并按“月”列分组。
附:刚刚意识到我回答了一个非常“古老”的问题:p