无法从Hive表中检索正确的最大日期?

时间:2018-02-05 12:25:20

标签: sql date hive hiveql

我很困惑。当我使用max(send_date)时,我得到2018-02-04 23:59:51.0。但是,当我使用max(TO_DATE(from_unixtime(UNIX_TIMESTAMP(send_date, 'yyyy-mm-dd'))))TO_DATE(from_unixtime(max(UNIX_TIMESTAMP(send_date, 'yyyy-mm-dd'))))时,我会获得2018-01-31 !!

为什么?

select max(send_date) from mytable;

麻生太郎,当我使用WHERE TO_DATE(from_unixtime(UNIX_TIMESTAMP(send_date, 'yyyy-mm-dd'))) = '2018-02-04'时,我得到了恢复0,但事实并非如此。

2 个答案:

答案 0 :(得分:0)

我使用的转换格式不正确。特别是,我使用yyyy-mm-dd代替yyyy-MM-dd

更多细节可以在这里找到: http://bigdataprogrammers.com/string-date-conversion-hive/

答案 1 :(得分:0)

在Hive中使用to_date时,您甚至不必指定该格式,因为默认情况下它会返回该格式。这是一个例子

  select max(to_date(d1)), max(d1), min(to_date(d1)), min(d1) from (
    select '2018-02-04 23:59:51.0' as d1
    union all
    select '2018-02-04 23:59:59.0' as d1
    union all
    select '2018-01-31 23:59:51.0' as d1
    union all
    select '2018-01-31 23:59:59.0' as d1
  ) tbl 

输出

OK
2018-02-04  2018-02-04 23:59:59.0   2018-01-31  2018-01-31 23:59:51.0
Time taken: 27.547 seconds, Fetched: 1 row(s)