2017-07-03 155 views
0

在BigQuery表中,我使用DateTime类型列中存储的某些日期,其值为“2016-01-20T00:00:00”。 我想运行查询,例如显示某个范围中包含的行(可以说从2016-01-01到2016-02-28)。BigQuery比较日期

所以问题是,当我把

...Where data < TIMESTAMP('2017-01-30 00:00:00')...//less then

它告诉我什么,但是当我将其更改为相对值像

...Where data > TIMESTAMP('2017-01-30 00:00:00')...//greater then

返回我连这些值在逻辑应该排除(如2017-01-20)

我测试了TIMESTAMP('201 7-01-20 00:00:00')返回'2017-01-26 00:00:00 UTC'。

那么从bigQuery DateTime中我应该使用哪种方法来比较我所拥有的日期?可能我需要将它们都转换成'价值以来的毫秒数?

感谢

+0

也许这是你http://www.karaszi.com/SQLServer/info_datetime.asp#DtFormatsInput – GuidoG

回答

0

谢谢大家的帮助。你的答案和链接已经引导我解决问题。

where data<cast('2017-01-23 00:00:00' as datetime) 

cast('2017-01-23 00:00:00' as datetime)提供'2017-01-23T00:00:00'价值和BIGQUERY是满意的,给我想要的结果。

0

如果你的列是日期时间为int:

Where data < 20170130 

Where data > 20170130 

如果列是datetime数据类型的,下降的TIMESTAMP:

Where data < '2017-01-30 00:00:00' 

Where data > '2017-01-30 00:00:00' 
+0

更好地使用通用的ISO格式,如“20170130”这是任何版本的理解和任何区域设置 – GuidoG

+0

我试过有趣它并得到错误“函数中的参数类型不匹配:GREATER:'date'是类型int64,'2018-01-30 00:00:00'是类型字符串”。还尝试了'2018-01-30T00:00:00',并得到相同的错误结果。只是'20170130'给我同样的错误。但是当我不使用' - 标记时,它会让我感觉到所有的东西,所以它认为它是某种“有些东西”的价值。 – maximelian1986

+0

@ maximelian1986我已经更新了包含您的数据类型的答案。 – cloudsafe