文档首页/ MapReduce服务 MRS/ 组件操作指南(普通版)/ 使用Spark2x(MRS 3.x及之后版本)/ Spark2x常见问题/ SQL和DataFrame/ 日期类型的字段作为过滤条件时匹配'2016-6-30'时没有查询结果
更新时间:2022-12-13 GMT+08:00

日期类型的字段作为过滤条件时匹配'2016-6-30'时没有查询结果

问题

为什么日期类型的字段作为过滤条件时匹配'2016-6-30'时没有查询结果,匹配'2016-06-30'时有查询结果。

如下图所示:“select count(*)from trxfintrx2012 a where trx_dte_par='2016-6-30'”,其中trx_dte_par为日期类型的字段,当过滤条件为“where trx_dte_par='2016-6-30'”时没有查询结果,当过滤条件为“where trx_dte_par='2016-06-30'”时有查询结果。

图1 示例

回答

在Spark SQL查询语句中,当查询条件中含有日期格式的字符串时,Spark SQL不会对它做日期格式的检查,就是把它当做普通的字符串进行匹配。以上面的例子为例,如果数据格式为"yyyy-mm-dd",那么字符串'2016-6-30'就是不正确的数据格式。