Hive 之 日期函数

来源:互联网 发布:2017双11淘宝交易额 编辑:程序博客网 时间:2024/05/16 03:39

转自:http://www.jianshu.com/p/e30395941f9c


1、日期函数UNIX时间戳转日期函数:from_unixtime()

函数格式返回值说明from_unixtimefrom_unixtime(bigint unixtime[, string format])string转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式
hive (temp)> select from_unixtime(1323308943,'yyyyMMdd') from dual;20111208hive (temp)> select from_unixtime(1323308943,'yyyy-MM-dd') from dual;2011-12-08

2、当前UNIX时间戳函数: unix_timestamp()

2.1 获取当前UNIX时间戳函数

函数格式返回值说明unix_timestampunix_timestamp()bigint获得当前时区的UNIX时间戳
hive (temp)> select unix_timestamp() from dual;1472105939

2.2 日期转UNIX时间戳函数

函数格式返回值说明unix_timestampunix_timestamp(string date)bigint转换格式为"yyyy-MM-dd HH:mm:ss"的日期到UNIX时间戳。转化失败,则返回0
hive (temp)> select unix_timestamp('2016-08-25 13:02:03') from dual;1472101323

2.3 指定格式日期转UNIX时间戳函数

函数格式返回值说明unix_timestampunix_timestamp(string date, string pattern)bigint转换格式为"yyyyMMdd HH:mm:ss"的日期到UNIX时间戳。转化失败,则返回0
hive (temp)> select unix_timestamp('20160825 13:02:03','yyyyMMdd HH:mm:ss') from dual;1472101323

3、日期时间转日期函数: to_date()

函数格式返回值说明to_dateto_date(string timestamp)string返回日期时间字段中的日期部分
hive (temp)> select to_date('2016-12-08 10:03:01') from dual;2016-12-08

4、日期转年函数: year()

函数格式返回值说明yearyear(string date)int返回日期中的年
hive (temp)> select year('2016-12-08 10:03:01') from dual;2016hive (temp)> select year('2016-12-08') from dual;2016

5、日期转月函数: month()

函数格式返回值说明monthmonth(string date)int返回日期中的月份
hive (temp)> select month('2016-12-08 10:03:01') from dual;12hive (temp)> select month('2016-11-08') from dual;11

6、日期转天函数: day()

函数格式返回值说明dayday(string date)int返回日期中的天
hive (temp)> select day('2016-12-08 10:03:01') from dual;8hive (temp)> select day('2016-11-18') from dual;18

7、日期转小时函数: hour()

函数格式返回值说明hourhour(string date)int返回日期中的小时
hive (temp)> select hour('2016-12-08 10:03:01') from dual;10

8、日期转分钟函数: minute()

函数格式返回值说明minuteminute(string date)int返回日期中的分钟
hive (temp)> select minute('2016-12-08 10:03:01') from dual;3

9、日期转秒函数: second()

函数格式返回值说明secondsecond(string date)int返回日期中的秒
hive (temp)> select second('2016-12-08 10:03:01') from dual;1

10、日期转周函数: weekofyear()

函数格式返回值说明weekofyearweekofyear(string date)int返回日期在当前的周数
hive (temp)> select weekofyear('2016-12-08 10:03:01') from dual;49

11、日期比较函数: datediff(string enddate, string startdate)

函数格式返回值说明datediffdatediff(string enddate, string startdate)int返回结束日期减去开始日期的天数
hive (temp)> select datediff('2016-12-08','2016-12-02') from dual;6

12、日期增加函数: date_add(string startdate, int days)

函数格式返回值说明date_adddate_add(string startdate, int days)string返回开始日期startdate增加days天后的日期
hive (temp)> select date_add('2016-12-08',10) from dual;2016-12-18#当前日期为2016-08-25,在此基础上加7天hive (temp)> select date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),7) from dual;2016-09-01

13、日期减少函数:date_sub (string startdate, int days)

函数格式返回值说明date_subdate_sub(string startdate, int days)string返回开始日期startdate减少days天后的日期
hive (temp)> select date_sub('2016-12-08',10) from dual;2016-11-28#当前日期为2016-08-25,在此基础上减7天hive (temp)> select date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),7) from dual;2016-08-18


作者:一刀Q
链接:http://www.jianshu.com/p/e30395941f9c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。