Google bigquery BigQuery-如何比较“a”;日期“;列(使用遗留SQL)?

Google bigquery BigQuery-如何比较“a”;日期“;列(使用遗留SQL)?,google-bigquery,google-cloud-platform,Google Bigquery,Google Cloud Platform,我有一个带有列Date的BigQuery表,它是Date类型。我正在尝试运行此查询: SELECT * FROM dataset.table_name WHERE Date = "2016-07-11" SELECT * FROM dataset.table_name WHERE Date = TIMESTAMP("2016-07-11") 这将抛出错误: Argument type mismatch in function EQUAL: 'Date' is type int32, '201

我有一个带有列
Date
的BigQuery表,它是
Date
类型。我正在尝试运行此查询:

SELECT * FROM dataset.table_name WHERE Date = "2016-07-11"
SELECT * FROM dataset.table_name WHERE Date = TIMESTAMP("2016-07-11")
这将抛出错误:

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

那么,如何比较BigQuery中的
date
字段呢?

试试下面的方法

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

我的另一个建议是不要使用保留字作为列名,我认为如果您的列命名正确-您原来的
WHERE
子句将非常有效,并且您不需要使用
DATE()=“”“

解决方案对我不起作用:

DATE(Date) = "2016-07-11"
相反,我不得不使用:

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

这很管用,谢谢:)我还通过使用
WHERE CAST(日期为字符串)=“2016-07-11”
使它工作起来。我尝试使用其他列名,但原始查询仍然抛出参数类型不匹配错误。接受您的回答。谢谢:)谢谢你的解决方案。FWIW,
日期
未在中列出。更改列名似乎并没有改变错误。奇怪的是,模式显示的列类型是
DATE
@jwadsack-注意:这篇文章是针对BigQuery遗留SQL的,而您引用的是标准SQL。不过,如果你喜欢的话,考虑一下投票吧:O。)米哈伊尔伯利特刚刚意识到:因为它对传统有效,所以被提升。我不知道为什么BigQueryWebUI默认为Legacy并隐藏复选框来更改它。这只是意味着您的字段不是问题中的日期类型,而是时间戳!