尝试使用以下语句:
SELECT *
FROM data.example
WHERE TIMESTAMP(timeCollected) < DATE_ADD(USEC_TO_TIMESTAMP(NOW()), 60, 'MINUTE')
从我的 bigquery 数据中获取数据。即使时间不在范围内,它似乎也返回相同的结果集。
timeCollected
格式为 2015-10-29 16:05:06
.我正在尝试构建一个查询,该查询旨在返回不超过一个小时的数据。所以应该返回最后一小时内收集的数据,其余的应该被忽略。
最佳答案
您所做的查询意味着“将任何收集时间小于一个小时的 future 归还给我”,字面意思是您的整个表。您需要以下内容(至少从我通过您的评论获得的信息):
SELECT *
FROM data.example
WHERE TIMESTAMP(timeCollected) > DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -60, 'MINUTE')
这意味着不会返回任何不超过一小时前的 timeCollected。我相信这就是你想要的。
此外,除非您需要,否则 Select * 在 BigQuery 中并不理想。由于数据是按列保存的,您可以通过仅选择您需要的内容来节省资金。我不知道你的用例,所以 * 可能是有保证的
关于google-bigquery - 在 BigQuery 中获取不超过一小时的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33436494/