我在Bigquery中运行一个查询,该查询选择上周内完成的所有数据。但是,我只是注意到我的代码是从前一周(周日到周日)选择数据,而不是从我运行查询时开始的直接周。如何更改此查询以实现此目的。谢谢你的帮助!
#standardsql
SELECT count(distinct DeviceID)
FROM `dataworks-356fa.FirebaseArchive.test2`
Where PeripheralType = 5
AND EXTRACT(WEEK FROM createdAt) = EXTRACT(WEEK FROM CURRENT_TIMESTAMP()) - 1
AND serial != 'null'
我尝试运行下面的查询,但这不会选择今天制作的任何数据条目。
AND EXTRACT(day FROM createdAt) = EXTRACT(day FROM CURRENT_TIMESTAMP()) - 7
答案 0 :(得分:1)
假设createdAt是时间戳 - 您应该使用:
WHERE DATE(createdAt) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND CURRENT_DATE()
所以,你的例子就像下面的
#standardsql
SELECT count(distinct DeviceID)
FROM `dataworks-356fa.FirebaseArchive.test2`
Where PeripheralType = 5
AND DATE(createdAt) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND CURRENT_DATE()
AND serial != 'null'