我正在尝试从BigQuery Standard SQL文档中查询以下查询:
SELECT DATE_DIFF(DATE '2010-07-07', DATE '2008-12-25', DAY) as days_diff;
https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#date_diff
但是,我从用户界面收到以下错误:
错误:在第1行第23列遇到了“” \'2010-07-07 \“”“,期望:”)“ ... [尝试使用标准SQL(https://cloud.google.com/bigquery/docs/reference/standard-sql/enabling-standard-sql)]
这是一个简单的副本,可以从文档复制并粘贴到Web UI查询编辑器中。
关于如何解决此问题的任何想法?
答案 0 :(得分:3)
下面分别是BigQuery旧版SQL和标准SQL的示例
请确保您尝试按以下答案中的代码进行操作-不仅是第二行,还包括2(both)行,包括看起来像注释的第一行-但实际上是查询的重要部分,因为它控制着哪个SQL方言将生效!
#legacySQL
SELECT DATEDIFF(DATE('2010-07-07'), DATE('2008-12-25')) AS days_diff
和
#standardSQL
SELECT DATE_DIFF(DATE '2010-07-07', DATE '2008-12-25', DAY) AS days_diff
都返回如下结果
Row days_diff
1 559
理想情况下,您应该考虑migrating to Standard SQL
答案 1 :(得分:2)
尽管您的问题的注释中已经提供了答案,而米哈伊尔(Mikhail)在其他答案中已经提供了答案,但让我与您分享一个完整的答案,希望可以解决您的所有疑问:
错误消息
如您得到的错误消息中所述[Try using standard SQL (...)]
。您正在尝试使用旧版SQL(而是使用DATEDIFF
function)运行此示例。您实际上是对的,您正在运行文档中提供的完全相同的查询,但是这里的问题是您使用的文档适用于Standard SQL(BigQuery中的首选查询语言),而您使用的是Legacy SQL(旧用户界面中的默认语言,即您所使用的语言。)
更改正在使用的查询语言
首先,我想指出使用标准SQL而不是传统SQL的重要性,因为前者增加了新功能,并且是当前建议与BigQuery一起使用的语言。您可以在the documentation中看到整个比较列表,但是如果您从BigQuery开始,我将直接使用Standard SQL。
现在,需要澄清的是,为了使用标准SQL而不是旧版SQL,您可以看看the documentation here,但让我总结一下为您提供的可用选项:
#standardSQL
或#legacySQL
,这些前缀将忽略默认配置,并使用通过此选项指定的语言。作为如何使用它的示例,请查看Mikhail的另一个答案,他与您分享了一些使用前缀来标识所用语言的示例。您应该在用户界面中复制完整的查询(包括前缀),然后您会看到它成功运行。