2016-09-22 41 views
0

我想在Bigquery中将拼写出来的星期几和月份转换为时间戳记格式。如何在BigQuery中以字符串格式拼写出工作日月份?

我的日期目前存储为Mon Jul 27 07:08:00 +0000 2015,我想将它们转换为2015-07-27 07:08:00 UTC

我已阅读答案从How do I cast dd/mm/yyyy string into date in BigQuery?,并试图对其进行格式化下列方式

SELECT TIMESTAMP(year + '-' + month + '-' + day) as output_timestamp 
FROM (
    SELECT 
REGEXP_EXTRACT(created_at, '.*/([0-9]{4})$') as year, 
REGEXP_EXTRACT(created_at, '^([0-9]{2}).*') as day, 
REGEXP_EXTRACT(created_at, r'(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)') AS month 
) 

[dataset.tablename] where collected_at = "2016-01-01 00:00:01" LIMIT 100 

不过,我得到这个错误query: SELECT query which references non constant fields or uses aggregation functions or has one or more of WHERE, OMIT IF, GROUP BY, ORDER BY clauses must have FROM clause. (error code: invalidQuery)

如何将其转换为我想要的格式?

回答

1

使用Standard SQL,你有PARSE_TIMESTAMP功能有很多的format elements,让您可以将字符串转换成TIMESTAMP,如果以后你需要建立自定义字符串出来,你可以使用FORMAT_TIMESTAMP。 在您的例子如下格式的字符串会的工作:使用

SELECT PARSE_TIMESTAMP("%a %b %d %T +0000 %E4Y", t) FROM 
(SELECT 'Mon Jul 27 07:08:00 +0000 2015' t) 

格式:

%a - Abbreviated weekday 
%b - Abbrevialted month 
%d - Time in HH:MM:SS 
%E4Y - 4 digits year 
+0

太谢谢你了。对于那些可能尝试这样做的人,您还需要取消选中SQL版本使用旧版SQL,以便此代码可以工作。否则你会得到'bigquery错误:2.24 - 2.84'。 – Avi

相关问题