2017-07-03 4 views
0

BigQueryテーブルでは、「2016-01-20T00:00:00」のような値を持つDateTime型の列に格納されている日付を使用しています。 たとえば、ある範囲に含まれている行を表示するようなクエリを実行したいとします(2016-01-01から2016-02-28まで)。BigQuery compare Date

だから、問題は、私は

...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

あなたの列がdatetime型の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

「20170130」のような普遍的なISOフォーマットを使用することをお勧めします。これはどのバージョンおよび地域設定でも理解されています – GuidoG

+0

それとエラーが発生しました」関数の引数型が一致しません: '日付'はint64型、 '2018-01-30 00:00:00'は型文字列です。同じエラー結果で '2018-01-30T00:00:00'も試しました。そして、ちょうど '20170130'は私に同じエラーを与えます。しかし、私は 'マークを使用しないと、それは私にすべてのものを返すので、何か「価値あるもの」から「秒」の上にある種のものだと思う。 – maximelian1986

+0

@ maximelian1986あなたのデータ型を含める答えを更新しました。 – cloudsafe