hive中的时间处理函数
HiveSql中的时间处理函数与标准的SQL有些差别,其中差别最大的是对标准时间的处理,hive中常见到标准时间(即1970年1月1日到当前时间的秒数),而Oracle中基本没有这类的用法,另外Hive中的时间格式通常为“YYYY-MM-DD”格式的,对于8位的日期函数,转化起来略微麻烦。常见到的时间函数如下
-
unix时间戳转日期函数:
from_unixtime
语法:from_unixtime(bigint unixtime[,string format])
转化unix时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式
举例:select from_unixtime(1323308943,'yyyyMMdd') from dual;
##返回值为20111208 -
获取当前unix时间戳函数
unix_timestamp
语法:unix_timestamp()
获得当前的时间戳
举例:select unix_timestamp() from dual;
##返回值为1323309615 -
日期转unix时间戳函数:
unix_timestamp
语法:unix_timestamp(string date)
转换格式为’yyyy-MM-dd HH:mm:ss’ 的日期到unix时间戳。如果转换失败,则返回0。
举例:select unix_timestamp('2011-12-07 13:01:03') from dual;
##返回值为1323234063 -
指定格式日期转unix时间戳函数:
unix_timestamp
语法:unix_timestamp(string date,string pattern)
转换pattern格式的日期到unix时间戳。如果转化失败,则返回0
举例:select unix_timestamp('20111207 13:01:03','yyyyMMdd HH:mm:ss') from dual;
##返回值为1323234063 -
日期时间转日期函数:
to_date
语法:to_date(string timestamp)
返回日期时间字段中的日期部分
select to_date('2011-12-08 10:03:01') from dual;
##返回值为2011-12-08 -
日期转年函数:
year
语法:year(string date)
返回日期中的年 -
日期转月函数:
month
语法:month(string date)
返回日期中的月份 -
日期转天函数:
day
语法:day(string date)
返回日期中的天 -
日期转小时函数
hour
语法:hour(string date)
返回日期中的小时 -
日期转分钟函数
minute
语法:minute(string date)
返回日期中的分钟
举例:select minute('2019-04-08 10:03:01') from dual;
##返回值为3 -
日期转秒函数
second
语法:second(string date )
返回日期中的秒 -
日期转周函数
weekofyear
语法:weekofyear(string date)
返回日期在当前的周数 -
日期比较函数
datediff
语法:datediff(string enddate,string startdate)
返回结束日期减去开始日期的天数
举例 :select datediff('2019-04-01','2019-04-02') from dual;
## 返回值为1 -
日期增加函数
date_add
语法:date_add(string startdate,int days)
返回开始日期startdate增加days天后的日期
举例:select date_add('2019-04-08',10) from dual;
## 返回值为2019-04-18 -
日期减少函数
date_sub
语法:date_sub(string strartdate,int days)
返回开始时间startdate减少days天后的日期
举例:select date_sub('2019-04-18',10) from dual;
## 返回值:2019-04-08