【发布时间】:2017-06-20 13:42:20
【问题描述】:
我有一个包含字符串类型列“YearMonthWeek”的大型数据文件 它包含诸如 2016 年 1 月第一周的“20160101”或 2016 年第 40 周的“20161040”等值,显然是在 10 月。
现在,我想将这些字符串转换为实际日期,以便将每个 YearMonthWeek 值转换为,例如该周的第一天。 (不管是周一还是周日,我都不在乎)。
我尝试了以下查询:
PARSE_TIMESTAMP('%Y%m%W', CAST(YearMonthWeek AS STRING)) AS datefield
(详见this文档) 这运行没有错误,但每个条目都会在每月的第一天返回我......
例如,“20160101”和“20160102”都被解析为 2016-01-01 00:00:00 UTC。
这是 PARSE_TIMESTAMP 函数的问题,还是我遗漏了什么?
【问题讨论】:
-
可能是重复的,或者可能只是帮助你stackoverflow.com/questions/30364141/…
-
这很奇怪。我刚刚尝试了
select PARSE_TIMESTAMP('%Y%W', '201640'),这将返回 2016-01-01。%W解析可能有问题。 -
是的,你需要去掉不必要的月份或日期
-
@RiggsFolly 不起作用。
-
有一个相关的feature request to support
%W。但是,它很可能只会启用年和周,但不会启用年、月和周。
标签: google-bigquery google-cloud-platform date-parsing