Databricks运行SQL查询时出现Mismatch Error数据类型不匹配错误如何解决
错误原因
你编写的过滤条件中2010-01-12没有用引号包裹,SQL语法会将其识别为整数减法运算,最终计算结果为整数1997,而表tester2中的InvoiceDate字段是date类型,整数和日期类型无法直接做等值比较,因此触发类型不匹配报错。
解决方案
你可以选择以下任意一种方案修改SQL语句:
- 方案1:给日期值添加单引号,依赖SQL的隐式类型转换完成匹配
%sql select UnitPrice, InvoiceDate from tester2 where InvoiceDate = '2010-01-12'
- 方案2:显式声明日期类型,避免隐式转换带来的兼容问题
%sql select UnitPrice, InvoiceDate from tester2 where InvoiceDate = date('2010-01-12')
- 方案3:如果表中
InvoiceDate实际为字符串存储格式,可统一转成日期类型后比较
%sql select UnitPrice, InvoiceDate from tester2 where date(InvoiceDate) = date('2010-01-12')
内容的提问来源于stack exchange,提问作者Abiodun Adeoye
相关产品推荐
相关产品推荐

