Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery 如何在Google BigQuery中将日期解析为周-年?_Google Bigquery - Fatal编程技术网

Google bigquery 如何在Google BigQuery中将日期解析为周-年?

Google bigquery 如何在Google BigQuery中将日期解析为周-年?,google-bigquery,Google Bigquery,我需要选择两组数据-一组来自上周,另一组来自去年的同一周 我认为这是通过提取周数来实现的,所以 选择提取(从日期开始的星期\u字段) 然后根据上周一得到去年的年值,就像这样 选择日期\u子项( 日期(日期子项(当前日期(),间隔7天),周(星期一)), 间隔1年) 我已设法将这些值连接在一起,以便它们以%Y-%W的格式表示日期。例如,2019-03 但是,使用PARSE_DATE()函数似乎无法解析BigQuery中的年-周。我尝试了许多与静态字符串的组合,例如: 选择解析日期(“%Y-%W

我需要选择两组数据-一组来自上周,另一组来自去年的同一周

我认为这是通过提取周数来实现的,所以

选择提取(从日期开始的星期\u字段)
然后根据上周一得到去年的年值,就像这样

选择日期\u子项(
日期(日期子项(当前日期(),间隔7天),周(星期一)),
间隔1年)
我已设法将这些值连接在一起,以便它们以%Y-%W的格式表示日期。例如,
2019-03

但是,使用
PARSE_DATE()
函数似乎无法解析BigQuery中的年-周。我尝试了许多与静态字符串的组合,例如:

选择解析日期(“%Y-%W”,“2020-53”),
分析日期(“%Y-%W”,“2019-01”),
分析日期(“%Y-%W”,“2018-00”)
无论输入什么,日期总是显示为指定年份的1月1日

Row f0_ f1_ f2_ 
1   
2020-01-01
2019-01-01
2018-01-01

我做错了什么?

关于您关于如何使用YEAR-WEEK格式在BigQuery中传递日期的问题,我建议您使用该函数

此函数使用两个参数。第一个必须是字符串,使用此参数可以选择日期的显示方式。你可以跟随来帮助你选择最适合你的。在您的情况下,我将使用“%Y-%W”或“%Y-%V”。根据文件:

%V:ISO 8601年度周数(星期一为年度第一天) 星期)作为十进制数(01-53)。如果包含一月的一周 1在新的一年中有四天或四天以上,则是第一周;否则 这是上一年的第53周,下一周是第1周

%W:一年中的周数(周一为一周的第一天) 作为十进制数(00-53)

第二个参数必须是日期格式

下面是使用虚拟数据的语法示例:

with a as (
select '2019-01-01' as date union all 
select '2020-10-21' as date union all
select '2018-08-15' as date 
order by date
)
select  format_date("%Y-%W", cast(date as date)) as date_w,
        format_date("%Y-%V", cast(date as date)) as date_v 
from a
请注意,我使用函数将字符串转换为日期格式。输出为:


我希望能有所帮助。

你到底想做什么?示例输入/输出行将帮助我们回答您的问题
PARSE_DATE()
返回一个
DATE
类型,所以当它们返回一个日期时,不要感到惊讶。至于他们返回1月1日的原因,如果函数返回一个日期,而您没有指定月份或日期,它将返回01和01,也就是1月1日。我希望得到1年前这一周的确切情况。本周是第5周(从2020年2月3日开始),所以我想从2019年开始的第5周进行比较。原则上,我认为最好的方法是将周数(5)设为整数,然后将年份值改为2020减去1。我以字符串的形式实现了这一点,但解析它是我的问题;我无法将已格式化为“周-年”的日期转换回正常日期值。谢谢你的回答,是的helpful@tonneofash,如果您在实施过程中遇到任何问题,我可以提供帮助。