在API查询中找不到BigQuerydate函数

我得到一个ApiError:function未find:STRFTIME_UTC_USEC错误,当我尝试运行下面的查询使用node.js BQ API:

SELECT STRFTIME_UTC_USEC(created, "%h %d %Y") as user_created from `tablePath` 

根据BQ文档https://cloud.google.com/bigquery/docs/reference/legacy-sql#datetimefunctions ,functionSTRFTIME_UTC_USEC在BQ中可用。 事实上,相同的查询在BQ控制台网站上的查询生成器中工作(只需将表转义字符从“更改为[]]。

调用查询的代码如下所示:

 const BigQuery = require('@google-cloud/bigquery'); const sqlQuery = SELECT STRFTIME_UTC_USEC(created, "%h %d %Y") as user_created from `tablePath` const options = { query: sqlQuery, useLegacySql: false // Use standard SQL syntax for queries. }; bigquery.query(options) .then(function (results) { const rows = results[0]; console.log(rows); callback(rows); }); 

任何解决scheme用于格式化与BigQuery的node.js API的时间戳? 我也遇到了同样的错误,试图在查询string中使用YEAR()函数。

这个函数是由Legacy SQL支持的,而不是由Standard SQL支持的,但是下面使它使用了标准的sql因此冲突/错误

 useLegacySql: false // Use standard SQL syntax for queries. 

只要删除这个或更改为true

如果您需要/想要使用标准SQL,请使用下面的示例

 SELECT FORMAT_DATE("%h %d %Y", CURRENT_DATE()), FORMAT_TIMESTAMP("%h %d %Y", CURRENT_TIMESTAMP()) 

而不是STRFTIME_UTC_USEC ,这是特定于传统的SQL,使用FORMAT_TIMESTAMP函数。 另请参阅从传统到标准SQL的迁移指南 。