在BigQuery标准SQL中按时间戳记值的前4位数字过滤

时间:2018-10-25 17:46:04

标签: sql google-bigquery standard-sql

我有一个变量,其中的条目是日期(时间戳)。确切的格式如下:2009-03-01 00:00:00 UTC

我要过滤年份为2009(时间戳的前4位)的所有行。我正在使用Google BigQuery标准SQL。我尝试了以下方法:

WHERE LEFT(CAST(incurred_month_timestamp as STING), '4') LIKE 2013

如果任何人都可以共享查询,这将有所帮助。

谢谢。

2 个答案:

答案 0 :(得分:0)

不要在日期上使用字符串函数! BigQuery具有许多有用的日期/时间/时间戳记功能。

您想要的是extract()

where extract(year from incurred_month_timestamp) = 2013

或使用范围:

where incurred_month_timestamp >= timestamp('2013-01-01') and
      incurred_month_timestamp < timestamp('2014-01-01')

答案 1 :(得分:0)

一种更简单的方法是在BigQuery Legacy SQL中使用内置的year函数,该函数从时间戳中提取年份。

这是您的代码示例。

where year(incurred_month_timestamp) == 2009