本文介绍了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本周迄今(雪花)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!