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

How to Add Filter to Certain Years Or Between Certain Dates

我正在编写一个查询,计算超过 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)

任何建议都将是非常好的,谢谢!

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

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;