美文网首页
hive的时间处理函数

hive的时间处理函数

作者: 不分享的知识毫无意义 | 来源:发表于2019-11-25 16:18 被阅读0次

    由于时间在hive里一般都是按照str存储的,有多重格式,比如时间戳格式或者标准的时间格式,有很多函数可以用于时间格式的换算。

    1.unix时间格式转换

    1.1 一些函数

    • current_timestamp()
      获取当前的日期,是标准格式的,'yyyyMMddHH:mm:ss'
    • unix_timestamp()
      获取当前的unix时间格式,这个函数没有参数。
    select unix_timestamp()
    

    unix_timestamp()可以把日期转换为unix格式,标准用法为 unix_timestamp(string date,string pattern)

    select unix_timestamp('20111207 13:01:03','yyyyMMddHH:mm:ss')
    输出:1323234063
    
    • from_unixtime()
      将unix时间转换为日期格式,标准用法from_unixtime(bigint unixtime[, stringformat])
      其中,stringformat可以省略,默认为'yyyy-MM-dd HH:mm:ss'。
    select from_unixtime(1323234063)
    输出:2011-12-07 13:01:03
    

    1.2 unix时间戳和标准时间的换算方法

    unix字符串相减得到的是秒,要进行转化的话:

    • 转化为分钟,除以60;
    • 转化为小时,除以3600;
    • 转化为天,除以24*3600.
      hive的默认时间戳是10位(秒级别)的,也就是说两个时间戳相减得到的是秒。
      值得注意的是,有些时候有的时间戳是13位的(毫秒级别),这个时候还要除以1000。

    2.日期操作函数

    • current_date
      获取当前的日期,是标准的日期格式,如'2019-11-24'。
    • date_sub()
      日期相减函数,语法为date_sub (string startdate,int days) ,其中第一个参数为日期,第二个参数为整数,表示减掉的天数。
    hive> select date_sub('2019-11-25',1);
    OK
    2019-11-24
    
    • date_add()
      日期增加函数,语法为date_add(string startdate, int days) ,其中第一个参数为日期,第二个参数为整数,表示增加的天数。
    select date_add('2019-11-25',1);
    OK
    2019-11-26
    
    • datediff()
      日期相减函数,得到两个日期之间的间隔,语法为datediff(string enddate,string startdate) ,返回值是int,表示间隔的日期。
      注意这个函数没有下划线。
    select datediff('2019-11-25','2019-11-24');
    返回值:1
    

    3.日期截取函数

    • to_date()
      将一些非标准的日期,比如'2019-11-25 17:47:08.971',to_date()的语法为to_date(string timestamp)。
    select to_date('2019-11-25 17:47:08.971')
    - 输出:2019-11-25
    
    • year()
      求日期所在的年份,语法为year(string timestamp)
    select year('2019-11-25 17:47:08.971')
    - 输出:2019
    
    • month()
      求日期所在的月份,语法为month(string timestamp)
    select month('2019-11-25 17:47:08.971')
    -输出:11
    
    • day()
      求日期所在的天,语法为day(string timestamp)
    select day('2019-11-25 17:47:08.971')
    -输出:25
    
    • hour、minute、second
      跟前几个一样,分别求时分秒,这个就不举例子了。
    • weekofday
      返回时一年中的第几周,语法为weekofyear(string timestamp)
    select weekofyear('2019-11-25 17:47:08.971')
    -输出:48
    

    相关文章

      网友评论

          本文标题:hive的时间处理函数

          本文链接:https://www.haomeiwen.com/subject/soymbctx.html