Google bigquery 有没有办法在BigQuery中将ISO 8601转换为日期格式?

Google bigquery 有没有办法在BigQuery中将ISO 8601转换为日期格式?,google-bigquery,iso8601,Google Bigquery,Iso8601,我有来自AmazonAlexa的ISO8601格式的输入,我想知道我是否需要做一大堆字符串子字符串和转换来将其转换成BigQuery时间戳格式,或者是否有一些函数可以做到这一点 我也明白要把2015-W49变成一个约会很难,但我想我会问 参考资料: 这可以通过函数PARSE_DATE完成,如下所述: 在BigQuery标准SQL中: SELECT DATE_ADD(PARSE_DATE('%Y', SUBSTR('2015-W49',0,4)), INTERVAL CAST(SUBSTR('20

我有来自AmazonAlexa的ISO8601格式的输入,我想知道我是否需要做一大堆字符串子字符串和转换来将其转换成BigQuery时间戳格式,或者是否有一些函数可以做到这一点

我也明白要把2015-W49变成一个约会很难,但我想我会问

参考资料:

这可以通过函数
PARSE_DATE
完成,如下所述:

在BigQuery标准SQL中:

SELECT DATE_ADD(PARSE_DATE('%Y', SUBSTR('2015-W49',0,4)), INTERVAL CAST(SUBSTR('2015-W49',7,2) as INT64)-1 WEEK) as parsed;

我预计该转换的结果如下,即各周的第一天,应分别为:

Week Date in ISO 8601   First Day of the week    
2015-W01                2014-12-28   
2015-W02                2015-01-04   
2015-W49                2015-11-29   
例如,您可以在上进行验证

我认为下面返回的结果是正确的

#standardSQL
WITH data AS (
  SELECT '2015-W01' AS dt UNION ALL
  SELECT '2015-W02' AS dt UNION ALL
  SELECT '2015-W49' AS dt  
)
SELECT 
  dt, 
  DATE_ADD(PARSE_DATE("%Y-W%W", dt), 
           INTERVAL 7 * CAST(SUBSTR(dt,-2,2) AS INT64) - 6 - 
           EXTRACT (DAYOFWEEK FROM PARSE_DATE("%Y-W%W", dt)) DAY
  ) as d
FROM data
ORDER BY dt

这个答案对于基于周计算日期最为准确。仍然需要大量代码用例语句/额外的编码来普遍解析所有可能的ISO 8601格式。我希望有一个内置函数,可以接受任何可能的ISO 8601日期并返回BigQuery时间戳格式。@hoggkm同意,我也无法找到直接的一步转换。如果我的回答帮助了你,你也接受了它,也请考虑投票——在@ HOGKMK-BTW中看到更多的AT和UpDebug部分,你可以把它作为一个特性请求提交,实际上只需要放一个。