当前位置: 首页 > 面试题库 >

Bigquery错误:400参数类型:DATE,TIMESTAMP,TIMESTAMP的运算符BETWEEN没有匹配的签名

商振
2023-03-14
问题内容

我已经在Google Cloud Bigquery上部署了webapp,当我查询数据时出现错误"400 No matching signature for operator BETWEEN for argument types: DATE, STRING, STRING. Supported signature: (ANY) BETWEEN (ANY) AND (ANY) at [2:38]"。这是我的SQL:

"""SELECT 
   Record_Start_Time, Generator_Power 
FROM 
   Furnace.FurnaceData
WHERE 
   Record_Start_Time BETWEEN TIMESTAMP("2018-01-21")
AND 
  TIMESTAMP("2018-07-21") 
ORDER BY Record_Start_Time
LIMIT 100""".format(request.form['start'],request.form['end'])

问题答案:

根据您收到的错误消息(我同意您的问题中的注释,这很奇怪,我怀疑与该特定查询不符),它看起来像是字段Record_Start_Time类型DATE,而在BETWEEN操作符中您正在使用TIMESTAMP取而代之。

您应该了解收到的错误消息的方式如下:

[...] operator BETWEEN for argument types: DATE, STRING, STRING. Supported signature: (ANY) BETWEEN (ANY) AND (ANY)

此错误的装置,对于所支持的签名BETWEEN操作者field BETWEEN a AND b,其中fielda并且b应该是相同类型的(
ANY )。此外,错误消息还告诉您您正在执行以下操作:_DATE_ BETWEEN _STRING_ AND _STRING_即,您正在尝试将一个DATE类型与一个STRING类型进行比较。这看起来很奇怪,因为TIMESTAMP("2018-01-21")它的TIMESTAMP类型不是STRING,但我想说的是,您过去曾尝试运行类似的查询WHERE Record_Start_Time BETWEEN "2018-01-21" AND "2018-07-21",而您共享的错误消息就是与该查询相对应的错误消息。对于您共享的查询,错误消息应该是:

400 No matching signature for operator BETWEEN for argument types: DATE, TIMESTAMP, TIMESTAMP. Supported signature: (ANY) BETWEEN (ANY) AND (ANY) at [2:38]

长话短说,确认Record_Start_Time字段的DATE类型和大小写,将您的WHERE子句更改为以下内容:

WHERE 
   Record_Start_Time BETWEEN DATE("2018-01-21")
AND 
  DATE("2018-07-21")


 类似资料:
  • 主要内容:Oracle TIMESTAMP数据类型简介,Oracle TIMESTAMP文字,Oracle TIMESTAMP示例,格式化TIMESTAMP值,提取TIMESTAMP组件,默认的TIMESTAMP格式在本教程中将学习Oracle 数据类型以及如何在Oracle数据库中有效处理数据。 Oracle TIMESTAMP数据类型简介 数据类型用于存储日期和时间数据,包括年,月,日,时,分和秒。 另外,它存储小数秒,它不是由DATE数据类型存储的。 要定义列,请使用以下语法: 指定字段小

  • 本文向大家介绍mysql 数据类型TIMESTAMP,包括了mysql 数据类型TIMESTAMP的使用技巧和注意事项,需要的朋友参考一下 在mysql中timestamp数据类型是一个比较特殊的数据类型,他可以自动在你不使用程序更新情况下只要你更新了记录timestamp会自动更新时间 通常表中会有一个Create date 创建日期的字段,其它数据库均有默认值的选项。MySQL也有默认值tim

  • 问题内容: 我需要将 时间 和 日期 都存储在mysql中。所以我使用了函数。但是我不知道我应该为phpmyadmin 类型列 使用什么。应该注意的是,返回时间和日期都是这样的: 这是一个解决方案,我可以使用分隔符来分隔日期和时间(和),然后将它们分别存储在DATE类型和TIME类型中。或者,我可以使用VARCHAR类型将它们都存储在一列中。但是我认为这些方法不是标准的。存储日期和时间的标准类型是

  • 我正在获取cloud firestore的数据&试图通过使用下面的代码在我的应用程序中显示。 我正在使用dart包对其进行格式化。但是,在更新了最新的云firestore插件后,我得到了这个错误- 无法理解如何将此“timestamp”对象解析为“datetime”。因为插件需要DateTime对象格式的数据。

  • 我正在尝试使用nifi将CSV记录插入Postgres数据库。 示例csv文件: 当nifi场景运行时,它会给出以下错误 错误列“timenow”的类型为timestamp,没有时区,但表达式的类型为character variating 如果我使用正常的 没有错误值插入到表中。我必须更改nifi配置才能将其添加到表中吗? 我换了Nifi CSVReader- 编辑:在第一条注释之后,Nifi生成