亚马逊 - Redshift:给定日期的周数错误

Posted

技术标签:

【中文标题】亚马逊 - Redshift:给定日期的周数错误【英文标题】:Amazon - Redshift : Week number for a given date is coming wrong 【发布时间】:2018-01-08 09:30:52 【问题描述】:

考虑到星期日是一周的第一天,以下 redshift 中的语句应返回 2 作为周数,而不是返回 1。

mysql 有一个名为Week() 的函数,我们可以在其中使用该模式来获得所需的结果。同样,redshift 中是否有任何函数可以用来获取正确的周数。

任何帮助将不胜感激。

SELECT EXTRACT(WEEK FROM TIMESTAMP '2018-01-07');

SELECT TO_CHAR(TIMESTAMP '2018-01-07','WW');

【问题讨论】:

它在 PostgreSQL 上返回相同的结果,因此它应该在 Redshift 上以相同的方式工作。那是因为这两个星期都是从星期一开始的。尝试查询“2017-01-01”,这是一个星期天,你会得到 52。 @Yankee,你是说红移上的一周从星期一开始吗?我以为它是从周日开始的,有没有办法改变这个 @JorgeMadrigal 是的,因为它在 Postgres 中是一样的。这是我发现在 Postgres 中改变的一些东西,应该也可以在 Redshift 中工作blog.0101010.com/making-date-trunc-use-a-sunday-week 【参考方案1】:

date_part 可以直接用于您的用例。

查询:

select date_part(w, '2018-01-07');

更多详情请点击链接:https://docs.aws.amazon.com/redshift/latest/dg/r_DATE_PART_function.html

【讨论】:

【参考方案2】:

似乎没有直接的解决方案,但这里有一个解决方法:

SELECT EXTRACT(WEEK FROM TIMESTAMP '2018-01-07'::date + '1 day'::interval);  

Source

【讨论】:

以上是关于亚马逊 - Redshift:给定日期的周数错误的主要内容,如果未能解决你的问题,请参考以下文章

找出一个月中给定日期的周数

如何在 Power Query M 中按给定日期查找 4 周滚动周期的周数

如何计算编号。从当前周到给定周的周数?

Redshift:提取给定星期和年份的星期六日期

怎么取两个日期之间的周数

JavaScript 获取日期范围从一年中的周数