【发布时间】:2020-02-05 14:08:55
【问题描述】:
我需要选择两组数据——一组来自上周,另一组来自去年同一周。
我看到这个工作的方式是提取周数,所以
SELECT EXTRACT(WEEK FROM DATE_FIELD)
然后我根据上周一得到去年的年份值,就像这样
SELECT DATE_SUB(
DATE_TRUNC(DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY), WEEK(MONDAY)),
INTERVAL 1 YEAR)
我已经设法将这些值连接在一起,以便它们以 %Y-%W 的格式表示日期。例如。 2019-03
但是,使用 PARSE_DATE() 函数似乎不适用于在 BigQuery 中解析年周。我已经尝试了一些静态字符串的组合,例如:
SELECT PARSE_DATE("%Y-%W", '2020-53'),
PARSE_DATE("%Y-%W", '2019-01'),
PARSE_DATE("%Y-%W", '2018-00')
无论输入什么,日期总是显示为指定年份的 1 月 1 日
Row f0_ f1_ f2_
1
2020-01-01
2019-01-01
2018-01-01
我做错了什么?
【问题讨论】:
-
您到底想做什么?示例输入/输出行将帮助我们回答您的问题。
PARSE_DATE()返回一个DATE类型,所以不要对他们返回一个日期感到惊讶。至于为什么返回 1 月 1 日,如果函数返回一个日期,而您没有指定月份或日期,它将返回 01 和 01,即 1 月 1 日。 -
我希望准确得出一年前一周的情况。本周是第 5 周(从 2020 年 2 月 3 日开始),所以我想从 2019 年的第 5 周开始进行比较。原则上,我认为最好的方法是将该周数 (5) 获取为整数并将年份值更改为 2020 减去 1。我已将其作为字符串实现,但解析它是我的问题。
标签: google-bigquery