亚马逊 - 红移:给定日期的周数计算错误

5

将星期日视为一周的第一天,以下红色语句在Redshift中应返回2作为周数,而不是返回1。

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

非常感谢您的帮助。

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

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

1
它在PostgreSQL上返回相同的结果,所以在Redshift上应该以相同的方式工作。这是因为两者都从星期一开始计算周数。尝试查询“2017-01-01”,那是一个星期日,你会得到52。 - Shailesh
@Yankee,你是说在Redshift上一周是从星期一开始的吗?我以为是从星期日开始的,有没有办法改变这个呢? - Jorge Madrigal
@JorgeMadrigal 是的,因为在 Postgres 中也是这样的。我找到了一些关于如何在 Postgres 中更改此设置的资料,应该在 Redshift 中同样适用。https://blog.0101010.com/making-date-trunc-use-a-sunday-week/ - Shailesh
3个回答

5

1

看起来没有直接的解决方案,但这里有一个解决方法:

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

来源


0

我在将MySQL转换为Redshift时遇到了同样的问题。 这是我解决它的方法。

TO_CHAR(DATE_TRUNC('week', your_date + INTERVAL '1 day') - INTERVAL '1 day', 'ww')::INTEGER

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接