hive时间处理与MySQL、Oracle数据库,存在一定的差异,当前时间的获取,以及时间的加减,下面会提供详细的计算处理方式
一、hive时间获取与计算
1,获取当前时间
语法:CURRENT_date()
返回值:年月日
2,获取当前时间戳
(1)unix_timestamp()
语法: unix_timestamp()
返回值: bigint
说明: 获得当前时区的UNIX时间戳
需要将bigint的时间戳转换为时间类型的时间戳
语法: from_unixtime(bigint unixtime[, string format])
返回值:年月日时分秒
举例:select from_unixtime(unix_timestamp() ,'yyyy-MM-dd HH:mm:ss')
(2)CURRENT_TIMESTAMP()
语法:CURRENT_TIMESTAMP()
返回值:年月日时分秒
3,取得昨天日期
select date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1);
select date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),1);
select date_format(date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1);
4,取得明天日期
select date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),1);
select date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1);
5,hive时间小时加减
思路:常用是转成时间戳再加减,
格式:select from_unixtime(unix_timestamp(时间字段)+小时数*60*60,'yyyy-MM-dd HH:mm:ss')
示例:select from_unixtime(unix_timestamp(CURRENT_TIMESTAMP())+12*60*60,'yyyy-MM-dd HH:mm:ss')
释义:查询当前时间+12小时的时间结果
二、Oracle时间获取与计算
1,时间加法
select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual;
select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual;
select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual;
select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual;
select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual;
select sysdate,add_months(sysdate,1) from dual;
select sysdate,add_months(sysdate,12) from dual;
2,时间减法
方法与时间加法一致,只是将数字修改为负数即可
select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual;
select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual;
select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual;
select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual;
select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual;
select sysdate,add_months(sysdate,-1) from dual;
select sysdate,add_months(sysdate,-12) from dual;
3,时间间隔操作
select sysdate,sysdate - interval '3' MINUTE from dual
select sysdate - interval '3' hour from dual
select sysdate - interval '3' day from dual
select sysdate,sysdate - interval '3' month from dual
select sysdate,sysdate - interval '3' year from dual
select sysdate,sysdate - 8 *interval '3' hour from dual
三、MySQL时间获取与计算
1,日期相加
DATE_ADD(NOW(),INTERVAL 1 second)
DATE_ADD(NOW(),INTERVAL 30 MINUTE)
DATE_ADD(NOW(),INTERVAL 1 hour)
DATE_ADD(NOW(),INTERVAL 1 day)
DATE_ADD(NOW(),INTERVAL 1 week)
DATE_ADD(NOW(),INTERVAL 1 month)
DATE_ADD(NOW(),INTERVAL 1 quarter)
DATE_ADD(NOW(),INTERVAL 1 year)
2,日期相减
DATE_SUB(NOW(),INTERVAL 1 second)
DATE_SUB(NOW(),INTERVAL 30 MINUTE)
DATE_SUB(NOW(),INTERVAL 1 hour)
DATE_SUB(NOW(),INTERVAL 1 day)
DATE_SUB(NOW(),INTERVAL 1 week)
DATE_SUB(NOW(),INTERVAL 1 month)
DATE_SUB(NOW(),INTERVAL 1 quarter)
DATE_SUB(NOW(),INTERVAL 1 year)
我是晓之以理的喵,欢迎大家多多交流~~
|