Google Bigquery Legacy SQL - 如何将周数设置为星期一?

Posted

技术标签:

【中文标题】Google Bigquery Legacy SQL - 如何将周数设置为星期一?【英文标题】:Google Bigquery Legacy SQL - How to set week number start to Monday? 【发布时间】:2018-02-17 10:23:21 【问题描述】:

我听说旧版 sql 中的 UTC_USEC_TO_WEEK() 函数允许您将开始周设置为星期一(而不是默认的星期日)。基本上,我希望查询的以下日期返回 1 而不是 2。

select week('2018-01-07') -- returns 2

我已经看到如何在标准 sql 中执行此操作,但我正在查询旧版 sql 视图,因此无法切换到标准 sql。

如何使用 UTC_USEC_TO_WEEK 将星期一作为一周的开始?

文档帮助不大,在网上​​也找不到任何东西。 对此的任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

只需返回一天DATE_ADD(),然后申请WEEK()

#legacySQL
SELECT WEEK(DATE_ADD('2018-01-07', -1, "DAY"))

【讨论】:

我应该提到我也在按周进行汇总和分组(但理想情况下,这应该作为一个单独的问题提出)。总而言之,您已经回答了我发布的问题!为此,我感谢@Mikhail Berlyant!【参考方案2】:

基本上是在寻找这个week(utc_usec_to_week(current_date(),1)) - 1,所以这将返回前一周,星期一作为一周的开始。

【讨论】:

以上是关于Google Bigquery Legacy SQL - 如何将周数设置为星期一?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 BigQuery 连接将 use_legacy_sql=False 传递给 Airflow DAG 中的 SqlSensor?

如何在 Bigquery Legacy SQL 中创建真正的函数

Bigquery Standard Sql 等效于 Legacy Sql 中的 LAST()

BigQuery Legacy SQL(子查询?)中占总数的百分比

Bigquery Standard Sql 等效于 Legacy Sql 中的 GROUP_CONCAT_UNQUOTED

BigQuery bq SSL 问题