2017-07-03 185 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