hive時(shí)間處理與MySQL消返、Oracle數(shù)據(jù)庫(kù)寺庄,存在一定的差異,當(dāng)前時(shí)間的獲取,以及時(shí)間的加減夸浅,下面會(huì)提供詳細(xì)的計(jì)算處理方式
一、hive時(shí)間獲取與計(jì)算
1尖昏,獲取當(dāng)前時(shí)間
語(yǔ)法:CURRENT_date()
返回值:年月日
2,獲取當(dāng)前時(shí)間戳
(1)unix_timestamp()
語(yǔ)法: unix_timestamp()
返回值: bigint
說(shuō)明: 獲得當(dāng)前時(shí)區(qū)的UNIX時(shí)間戳
需要將bigint的時(shí)間戳轉(zhuǎn)換為時(shí)間類型的時(shí)間戳
語(yǔ)法: from_unixtime(bigint unixtime[, string format])
返回值:年月日時(shí)分秒
舉例:select from_unixtime(unix_timestamp() ,'yyyy-MM-dd HH:mm:ss')
(2)CURRENT_TIMESTAMP()
語(yǔ)法:CURRENT_TIMESTAMP()
返回值:年月日時(shí)分秒
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時(shí)間小時(shí)加減
思路:常用是轉(zhuǎn)成時(shí)間戳再加減庐冯,
格式:select from_unixtime(unix_timestamp(時(shí)間字段)+小時(shí)數(shù)*60*60,'yyyy-MM-dd HH:mm:ss')
示例:select from_unixtime(unix_timestamp(CURRENT_TIMESTAMP())+12*60*60,'yyyy-MM-dd HH:mm:ss')
釋義:查詢當(dāng)前時(shí)間+12小時(shí)的時(shí)間結(jié)果
二、Oracle時(shí)間獲取與計(jì)算
1坎穿,時(shí)間加法
--加1秒
select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual;
--加1分鐘
select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual;
--加1小時(shí)
select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual;
--加1天
select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual;
--加1星期
select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual;
--加1月
select sysdate,add_months(sysdate,1) from dual;
--加1年
select sysdate,add_months(sysdate,12) from dual;
2展父,時(shí)間減法
方法與時(shí)間加法一致,只是將數(shù)字修改為負(fù)數(shù)即可
--減1秒
select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual;
--減1分鐘
select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual;
--減1小時(shí)
select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual;
--減1天
select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual;
--減1星期
select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual;
--減1月
select sysdate,add_months(sysdate,-1) from dual;
--減1年
select sysdate,add_months(sysdate,-12) from dual;
3玲昧,時(shí)間間隔操作
-- 當(dāng)前時(shí)間減3分鐘
select sysdate,sysdate - interval '3' MINUTE from dual
-- 當(dāng)前時(shí)間減3小時(shí)
select sysdate - interval '3' hour from dual
-- 當(dāng)前時(shí)間減3天
select sysdate - interval '3' day from dual
-- 當(dāng)前時(shí)間減3月
select sysdate,sysdate - interval '3' month from dual
-- 當(dāng)前時(shí)間減3年
select sysdate,sysdate - interval '3' year from dual
-- 當(dāng)前時(shí)間減去8*3小時(shí)
select sysdate,sysdate - 8 *interval '3' hour from dual
三栖茉、MySQL時(shí)間獲取與計(jì)算
1,日期相加
-- 當(dāng)前時(shí)間加1秒
DATE_ADD(NOW(),INTERVAL 1 second)
-- 當(dāng)前時(shí)間加30分鐘
DATE_ADD(NOW(),INTERVAL 30 MINUTE)
-- 當(dāng)前時(shí)間加1小時(shí)
DATE_ADD(NOW(),INTERVAL 1 hour)
-- 當(dāng)前時(shí)間加1天
DATE_ADD(NOW(),INTERVAL 1 day)
-- 當(dāng)前時(shí)間加1星期
DATE_ADD(NOW(),INTERVAL 1 week)
-- 當(dāng)前時(shí)間加1個(gè)月
DATE_ADD(NOW(),INTERVAL 1 month)
-- 當(dāng)前時(shí)間加1季度
DATE_ADD(NOW(),INTERVAL 1 quarter)
-- 當(dāng)前時(shí)間加1年
DATE_ADD(NOW(),INTERVAL 1 year)
2酌呆,日期相減
-- 當(dāng)前時(shí)間減1秒
DATE_SUB(NOW(),INTERVAL 1 second)
-- 當(dāng)前時(shí)間減30分鐘
DATE_SUB(NOW(),INTERVAL 30 MINUTE)
-- 當(dāng)前時(shí)間減1小時(shí)
DATE_SUB(NOW(),INTERVAL 1 hour)
-- 當(dāng)前時(shí)間減1天
DATE_SUB(NOW(),INTERVAL 1 day)
-- 當(dāng)前時(shí)間減1星期
DATE_SUB(NOW(),INTERVAL 1 week)
-- 當(dāng)前時(shí)間減1個(gè)月
DATE_SUB(NOW(),INTERVAL 1 month)
-- 當(dāng)前時(shí)間減1季度
DATE_SUB(NOW(),INTERVAL 1 quarter)
-- 當(dāng)前時(shí)間減1年
DATE_SUB(NOW(),INTERVAL 1 year)
我是曉之以理的喵衡载,歡迎大家多多交流~~