ISO 周 (201905) BigQuery 中的提取日期

Ave*_*Tom 2 sql google-bigquery

我需要从 ISO 周数中提取星期日的日期:即 201905 它需要位于 #standardSQL 中,因为它将使用不支持旧版的脚本进行安排。

我尝试从 Google Sheets 调整工作公式,但无法弄清楚。Google Sheets 的原始公式:

TO_TEXT (
(DATE(LEFT(Week_ISO,4),1,1)
- (WEEKDAY(DATE(LEFT(Week_ISO,4),1,1))-2)
+ (RIGHT(Week_ISO,2)-1)*7) 
+6)
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

根据我对文档的阅读,这应该有效:

PARSE_DATE('%G%V', isoyyyymm)
Run Code Online (Sandbox Code Playgroud)

但事实并非如此。

所以,这是一个替代方案:

SELECT DATE_ADD(DATE_TRUNC(PARSE_DATE('%Y%m%d', CONCAT(substr(isoyyyyww, 1, 4), '0601')),
                           isoyear
                          ),
                INTERVAL CAST(substr(isoyyyyww, -2) as int64) WEEK
               )
FROM (SELECT '200506' as isoyyyyww);
Run Code Online (Sandbox Code Playgroud)

这里的想法如下:

  • 将 yyyyww 格式转换为年中的日期。
  • 将日期截断为 ISO 年份的开头。
  • 添加回适当的周数。

如果您的值是数字而不是字符串,则可以调整此设置。