Hive中与时间相关的内置函数

(1)获取当前的时间戳(以秒位单位):unix_timestamp(),返回值类型位BIGINT。例如:

select unix_timestamp() from dim_user limit 1;     // 在MySQL, Oracle中会有一个虚拟表dual用来做一些通用的查询操作,但是hive中的表必须是注册的表,不存在dual表,所以必须只指定一个存在的表,例如已注册的dim_user表。

如果unix_timestamp()带一个string类型的date, 则会将date代表的时间转换为unix 时间。例如:

select unix_timestamp(‘2013-01-13 13:09:10’) from dim_user limit 1;   // 注意date的格式必须为yyyy-MM-dd HH:mm:ss

如果unix_timestamp()的第二个参数指定了date format,则会根据该format转换成Unix时间戳。例如:

select unix_timestamp(‘2013-01-13 13:09:10’,’yyyy-MM-dd’) from dim_user limit 1;  //会忽略后面的小时等信息

(2)将时间戳转换为指定格式的日期字符串: from_unixtime(BIGINT, ‘format’),返回string类型,例如:

select from_unixtime(1476288000, ‘yyyy-MM-dd’) from dim_user limit 1;    // 返回2016-10-13

(3)日期增加函数:date_add(string startdate, interval), 返回string类型,例如:

select date_add(‘2016-10-12’, 30) from dim_user limit 1;      // 返回2016-11-11

(4)日期减少函数:date_sub(string startdate, interval), 返回string类型,例如:

select date_sub(‘2016-10-12’, 30) from dim_user limit 1;      // 返回2016-09-12

(5)日期间隔函数:datediff(string startdate, string endate),返回值为int类型, 例如:

select datediff(‘2016-10-19’, ‘2016-09-20’) from dim_user limit 1; // 返回29

(6)to_date(), year(),month(), day(), hour(), minute(), second() 分别获取日期字符串的日期,年份,月份,天份, 小时,分钟,秒数等,例如:

select to_date(‘2016-09-10 11:11:23’) from dim_user limit 1;  // 返回2016-09-10

    原文作者:我爱娃娃菜
    原文地址: https://www.jianshu.com/p/371730c1abf6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞