Google bigquery 将转换日期自动化为YYWW格式

Google bigquery 将转换日期自动化为YYWW格式,google-bigquery,bigquery-standard-sql,Google Bigquery,Bigquery Standard Sql,我需要将2016年最后一周的所有日期逐日期转换为YYYYWW格式 一切正常,直到2017-01-01: “201752”应为“201652” 自动化历史日期的最佳方法 大概是这样的: IF (REGEXP_EXTRACT(date,r'\d{4}-\d{2}-(\d{2})') = CAST('01' AS STRING) AND Week = CAST('52' AS STRING), Year-1, Year) %Y将返回日期的日历年,而不是ISO年。要返回ISO年,即2016年2

我需要将2016年最后一周的所有日期逐日期转换为YYYYWW格式

一切正常,直到2017-01-01:

“201752”应为“201652”

自动化历史日期的最佳方法

大概是这样的:

IF (REGEXP_EXTRACT(date,r'\d{4}-\d{2}-(\d{2})') = CAST('01' AS STRING)
    AND Week = CAST('52' AS STRING), Year-1, Year)

%Y将返回日期的日历年,而不是ISO年。要返回ISO年,即2016年2017年1月1日,请使用%G。另请参见。

%Y将返回日期的日历年,而不是ISO年。要返回ISO年,即2016年2017年1月1日,请使用%G。另请参见。

下面是有关BigQuery标准SQL的信息

标准SQL 输入为 选择日期 从最不安[ 日期“2016-12-26”, 日期“2016-12-27”, 日期“2016-12-28”, 日期“2016-12-29”, 日期“2016-12-30”, 日期“2016-12-31”, 日期“2017-01-01”]为日期 选择 日期 设置日期“%G%V”的格式,日期为YearWeek 从输入 按日期订购 另请注意-在您的示例中: 1.您不需要将日期转换为DATE,因为DATE已经是DATE类型
2.你不需要约会。。。AS STRING AS FORMAT_DATE已返回字符串

以下是BigQuery标准SQL

标准SQL 输入为 选择日期 从最不安[ 日期“2016-12-26”, 日期“2016-12-27”, 日期“2016-12-28”, 日期“2016-12-29”, 日期“2016-12-30”, 日期“2016-12-31”, 日期“2017-01-01”]为日期 选择 日期 设置日期“%G%V”的格式,日期为YearWeek 从输入 按日期订购 另请注意-在您的示例中: 1.您不需要将日期转换为DATE,因为DATE已经是DATE类型 2.你不需要约会。。。AS STRING AS FORMAT_DATE已返回字符串

Row date    YearWeek    Year    Week     
1   2016-12-26  201652  2016    52   
2   2016-12-27  201652  2016    52   
3   2016-12-28  201652  2016    52   
4   2016-12-29  201652  2016    52   
5   2016-12-30  201652  2016    52   
6   2016-12-31  201652  2016    52   
7   2017-01-01  201752  2017    52
IF (REGEXP_EXTRACT(date,r'\d{4}-\d{2}-(\d{2})') = CAST('01' AS STRING)
    AND Week = CAST('52' AS STRING), Year-1, Year)