2017-09-25 91 views
0

我试图(和失败)执行的BigQuery以下查询使用标准SQLTIMESTAMP和标准SQL在谷歌的BigQuery

SELECT 
    user_id 
FROM 
    dataset.table 
WHERE 
    timestamp > TIMESTAMP("2017-09-18 00:00") 

我不断得到消息

Query Failed 
Error: Invalid timestamp: '2017-09-18 00:00' 

我试过了,绝望,与2017-09-18T00:00或类似传统SQL timestamp > "2017-09-18 00:00"没有成功。

感谢您的帮助。

+0

什么类型是你的'timestamp'列? –

回答

1

我相信一个有效的时间戳的时间部分有小时,分钟,秒。您的时间戳文字省略秒部分。尝试包括它:

SELECT 
    user_id 
FROM 
    dataset.table 
WHERE 
    timestamp > TIMESTAMP('2017-09-18 00:00:00') 

您需要在时间戳秒,为什么你的当前时间戳是没有意义的,是BigQuery的内部存储时间戳作为新纪元的秒数​​的原因。没有指定秒数,您的时间戳不能可靠地存储。

documentation

你可以描述TIMESTAMP数据类型或者UNIX时间戳或日历日期时间。 BigQuery将TIMESTAMP数据内部存储为UNIX时间戳,精度为微秒。

+0

感谢您的解释。 –

1

由于documentation of bigquery表明

日期和时间字符串

日期和时间字符串格式为YYYY-MM-DD HH:MM:SS。支持UTC和 Z说明符。

您已经提供2017-09-18 00:00这是YYYY-MM-DD HH:MM。 您需要提供2017-09-18 00:00:00

所以您的查询应该如下

SELECT 
    user_id 
FROM 
    dataset.table 
WHERE 
    timestamp > TIMESTAMP("2017-09-18 00:00:00") 
+0

该死的,就是这样。感谢并为这个愚蠢的问题感到抱歉。 –

0

另一种方式来写这个表达式,而无需指定额外的零是:

TIMESTAMP(DATE "2017-09-18")