日期类型的字段作为过滤条件时匹配'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'”时有查询结果。
回答
在Spark SQL查询语句中,当查询条件中含有日期格式的字符串时,Spark SQL不会对它做日期格式的检查,就是把它当做普通的字符串进行匹配。以上面的例子为例,如果数据格式为"yyyy-mm-dd",那么字符串'2016-6-30'就是不正确的数据格式。