【Hive】timestamp转时间

  1. 时间戳转时间:数据表中我们希望看到的是yyyy-MM-dd HH:mm:ss,然而实际传来的数据可能是1234567890,或者'1234567890'
from_unixtime(cast(SUBSTR(write_log_time, 1, 10) as bigint) , 'yyyy-MM-dd HH:mm:ss')

一行代码就好,槽点在于输入是 10bigint or double
有时候时间戳是按照毫秒级的,因此会有13位,

  1. 如果输入a是int or double 型:
    直接a/1000就好;
  2. 如果输入是string:
    cast(SUBSTR(write_log_time, 1, 10) as bigint

  1. 时间格式变换:
    from_unixtime(unix_timestamp('2018-11-05','yyyy-MM-dd'),'yyyy/MM/dd')
    或者
    date_format('2015-04-08 10:10:01', 'yyyy-MM')
    or
    concat(substr('2018-09-05',1,4),substr('2018-09-05',6,2),substr('2018-09-05',9,2))

你可能感兴趣的:(【Hive】timestamp转时间)