2016-08-22 11 views
9

dateタイプのDateという列のBigQueryテーブルがあります。私はこのクエリを実行しようとしています:私もこのクエリを試してみましたBigQuery - 「日付」列を比較する方法(従来のSQLを使用)

Argument type mismatch in function EQUAL: 'Date' is type int32, '2016-07-11' is type string 

SELECT * FROM dataset.table_name WHERE Date = "2016-07-11" 

これは、エラーがスローされます

SELECT * FROM dataset.table_name WHERE Date = TIMESTAMP("2016-07-11") 

が、これは私のテーブルが、0の結果を返します。 Date列にこの値(2016-07-11)のレコードが少なくとも1つ含まれています。

BigQueryのdateフィールドを比較するにはどうすればよいですか?

答えて

10

私の追加の推奨事項は、列の名前として予約語を使用しないことであろう、私はあなたの列が適切に命名された場合を考える

WHERE DATE(Date) = "2016-07-11" 

の下に試してみてください - あなたの元WHERE句は完全に働いただろうし、あなたがする必要はありませんこのソリューションは、私のために働いていなかったDATE()=""

+0

これが機能するには、あなたに感謝:)私もそれが 'WHERE CAST(STRINGとして日)=「2016年7月11日」'使用して動作させるために管理しています。私は別の列名で試しましたが、元のクエリは引き続き_argument型のmismatch_エラーを投げました。 – rereradu

+0

あなたは答えました。ありがとうございました:) – rereradu

+0

解決に感謝します。 FWIW、[DATE]は[予約語のリスト](https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#reserved_keywords)には記載されていません。列名を変更してもエラーは変わっていないようです。奇妙なことは、スキーマが列の型が 'DATE'であることを示していることです。 – jwadsack

0

と回避策を使用します。

DATE(Date) = "2016-07-11" 

インTEAD、私が使用していた:

Date = TIMESTAMP("2016-07-11") 
+1

あなたのフィールド問題のように日付型ではなく、むしろタイムスタンプです! –

+0

データ型は重要です:o) –