将星期日视为一周的第一天,以下红色语句在Redshift中应返回2作为周数,而不是返回1。
Mysql有一个名为Week()的函数,我们可以使用模式来获取所需的结果。同样,在Redshift中是否有任何函数可用于获取正确的周数。
非常感谢您的帮助。
SELECT EXTRACT(WEEK FROM TIMESTAMP '2018-01-07');
SELECT TO_CHAR(TIMESTAMP '2018-01-07','WW');
将星期日视为一周的第一天,以下红色语句在Redshift中应返回2作为周数,而不是返回1。
Mysql有一个名为Week()的函数,我们可以使用模式来获取所需的结果。同样,在Redshift中是否有任何函数可用于获取正确的周数。
非常感谢您的帮助。
SELECT EXTRACT(WEEK FROM TIMESTAMP '2018-01-07');
SELECT TO_CHAR(TIMESTAMP '2018-01-07','WW');
date_part可以直接用于您的用例。
查询:
select date_part(w, '2018-01-07');
这里有一个详细信息的链接:https://docs.aws.amazon.com/redshift/latest/dg/r_DATE_PART_function.html
看起来没有直接的解决方案,但这里有一个解决方法:
SELECT EXTRACT(WEEK FROM TIMESTAMP '2018-01-07'::date + '1 day'::interval);
我在将MySQL转换为Redshift时遇到了同样的问题。 这是我解决它的方法。
TO_CHAR(DATE_TRUNC('week', your_date + INTERVAL '1 day') - INTERVAL '1 day', 'ww')::INTEGER