关于Hive中按时间范围查询不到数据的问题

时间:2024-04-01 09:46:19


       根据需求,使用Hive2从sqlserver中导入数据到HDFS上,由于sqlserver中存储的时间格式为:2018-06-04 00:00:00.000,如果按照这种格式导入到Hive,按时间范围查询就查不到,使用了to_date, date_format, cast(date as string)等都没用,后来转换了思路,既然Hive按时间字段不能正常查询,那就转为字符串来查总可以吧。如下是我从sqlserver导入到HDFS,再导入到Hive表的原始数据:

关于Hive中按时间范围查询不到数据的问题

      我的需求是这样的,就是按照时间字段(c_dt)范围查询数据,并进行相关分析,按照"yyyy-MM-dd HH:mm:ss"格式来查询不到,那为什么不转成"yyyyMMdd"来查询呢,后来经过多番尝试,可以实现按时间范围查询,如下图:

关于Hive中按时间范围查询不到数据的问题

    Hql语句为:select c_gcode, c_name, cast(substring(regexp_replace(c_dt,'-',''),2,9) as string), c_number_sale from xlsx_goods_info where cast(substring(regexp_replace(c_dt,'-',''),2,9) as string) >= '20180602' and cast(substring(regexp_replace(c_dt,'-',''),2,9) as string) <= '20180603' order by c_name;


     刚刚转大数据分析行业,希望能帮到跟我有相同经历的朋友,若有不对的地方,还请大神多多指教!