1
作为日历维度的一部分,我需要填充iso_week_start_date,iso_week_end_date和iso_week_number。除了这些字段,我已经能够构建日历维度。谢谢。如何计算日期维度的iso_week_start_date和iso_week_end_date?
作为日历维度的一部分,我需要填充iso_week_start_date,iso_week_end_date和iso_week_number。除了这些字段,我已经能够构建日历维度。谢谢。如何计算日期维度的iso_week_start_date和iso_week_end_date?
Snowflake提供DATE_TRUNC(WEEK, ..)
它可以让你获得ISO周的第一天。然后添加6天给你最后一天。还有还有DATE_EXTRACT(WEEK, ..)
(或简称WEEK(..)
)
例如:
select extract(week, '2017-10-10'::date), date_trunc(week, '2017-10-10'::date), dateadd(day, 6, date_trunc(week, '2017-10-10'::date));
-----------------------------------+--------------------------------------+-------------------------------------------------------+
EXTRACT(WEEK, '2017-10-10'::DATE) | DATE_TRUNC(WEEK, '2017-10-10'::DATE) | DATEADD(DAY, 6, DATE_TRUNC(WEEK, '2017-10-10'::DATE)) |
-----------------------------------+--------------------------------------+-------------------------------------------------------+
41 | 2017-10-09 | 2017-10-15 |
-----------------------------------+--------------------------------------+-------------------------------------------------------+
记住,ISO周有一个有点怪异的语义,请参阅文档以了解详情。
谢谢Marcin。这非常有帮助。这是否意味着Snowflake具有ISO日期的本机支持?那么我怎么能从一个特定的日期获得常规周数(不是ISO)呢?有没有不同的功能呢?我可以在SF文档“dayofweek_iso”中找到一个函数。你是否知道任何其他这样的功能?我在文档中找不到任何这样的东西。 – Mohit
今天,Snowflake主要提供基于ISO的星期功能:WEEK例如返回ISO星期。另外,Snowflake将很快提供额外的与周有关的功能。希望本季度。这应该满足您的要求。 –
顺便说一句,如果您可以提供您想要查看的确切类型的功能,请尽可能详细地添加注释。例如,您是否希望Dec 31st始终属于其一年中的某周(例如52或53),或者它是否属于下一年的第1周。 –