如何为特定年份或特定日期之间添加过滤器

时间:2019-05-08 10:35:11

标签: sql google-bigquery standard-sql

我正在编写一个查询,该查询对超过20分钟的行程进行计数,但仅在2015、2016、2017年进行。该代码可以正常工作,显示年份和每年的行程次数,但结果显示的是所有年份,而不是只是这三个。问题是start_time列是一个时间戳。我可以做timestamp_add,然后再做一次(如下所示,因为它们只是占位符而忽略了天数),但看起来太草率了

我可以做timestamp_add,然后在两者之间(如下所示,因为它们只是占位符而忽略了天数),但是看起来很草率。

SELECT extract(year from start_time), count(*)
FROM `datapb.shopping.trips`
where duration_minutes > 20 and
      start_time between timestamp_add(current_timestamp(), interval -1000 DAY) AND timestamp_add(current_timestamp(), interval -350 DAY)
group by EXTRACT(YEAR from start_time)

任何建议都会很棒,谢谢!

1 个答案:

答案 0 :(得分:2)

为什么不只使用时间戳常量?

select extract(year from start_time) as yyyy, count(*)
from `datapb.shopping.trips`
where duration_minutes > 20 and
      start_time >= timestamp('2015-01-01') and
      start_time < timestamp('2018-01-01')
group by yyyy
order by yyyy;