本文介绍了ISO本周迄今(雪花)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的ISO周和年为yyyy|ww。我怎么才能在雪花里把它变成约会呢?例如:2021|13应返回2021-03-29

to_date('2021|13','yyyy|ww')不工作。Snowflake似乎无法识别"WW"格式。

推荐答案

您可以创建一个自定义项来执行此工作:

create or replace function isoweek_to_date(s string)
returns date
  as
  $$
    select DATEADD(
      DAY,
      WEEK * 7
      - CASE
          WHEN DAYOFWEEKISO(DATE_FROM_PARTS(YEAR, 1, 1)) < 5
          THEN 7 ELSE 0
         END
      + 1
      - DAYOFWEEKISO(DATE_FROM_PARTS(YEAR, 1, 1)),
      DATE_FROM_PARTS(YEAR, 1, 1)
    )
    from (select regexp_substr(s, '[0-9]+', 1, 1) year, regexp_substr(s, '[0-9]+', 1, 2) week)
  $$
;

select isoweek_to_date('2021|13')
// 2021-03-29
;

取自Hans的代码https://stackoverflow.com/a/58298264/132438

这篇关于ISO本周迄今(雪花)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-30 12:17