在BigQuery中获取不超过一小时的数据

Nos*_*lvi 2 google-bigquery

试图使用声明:

SELECT * 
FROM data.example 
WHERE TIMESTAMP(timeCollected) < DATE_ADD(USEC_TO_TIMESTAMP(NOW()), 60, 'MINUTE') 
Run Code Online (Sandbox Code Playgroud)

从我的bigquery数据中获取数据.即使时间不在范围内,它似乎也返回相同的结果集.timeCollected是格式2015-10-29 16:05:06.

我正在尝试构建一个旨在返回的查询是不超过一小时的数据.因此,应该返回最后一小时内收集的数据,其余的应该被忽略.

Edo*_*Edo 15

使用标准 SQL:

SELECT * FROM data
WHERE timestamp > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -60 MINUTE)
Run Code Online (Sandbox Code Playgroud)


Pat*_*ice 8

您所做的查询意味着"将任何收集时间小于一小时的任何东西都归还给我",这将意味着您的整个表格.您需要以下内容(至少从我的评论中得出):

SELECT * 
FROM data.example 
WHERE TIMESTAMP(timeCollected) > DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -60, 'MINUTE')
Run Code Online (Sandbox Code Playgroud)

这意味着任何不大于一小时的timeCollected都不会被返回.我相信这就是你想要的.

此外,除非您需要,否则Select*在BigQuery中并不理想.由于数据是按列保存的,因此您只需选择您需要的线路即可节省资金.我不知道你的用例,所以*可能是有道理的