最近用hive比較多,雖然效率低,但是由於都是t+1的業務模式。所以也就不要求太多了,夠用就行。其中用的吧比較多就是時間了,由於大資料中很多欄位都不是標準的時間型別字段,所以期間涉及了很多的時間日期欄位的處理,這裡做乙個彙總。一遍以後查詢使用。也方便大家學習。
1.先來乙個比較老的,select unix_timestamp() ;
結果如下:
2.通過提示可知該用法已經被放棄了建議採用current_timestamp來替代。查結果如下:
3.如果當前時間為int型別則需要轉義一下比如使用from_unixtime()
select4.獲取當前日期current_date。**如下:from_unixtime(unix_timestamp());
--2018-02-27 14:51:01
select1.對比日期函式,經常用於日期之間比較大小,或者計算差值,日期加減。current_date;--
2018-02-27
日期差值:datadiff(結束日期,開始日期),返回結束日期減去開始日期的天數。
日期加減:date_add(時間,增加天數),返回值為時間天+增加天的日期;date_sub(時間,減少天數),返回日期減少天後的日期。
執**況如圖所示:
注意如果想知道相差多少個小時又怎麼去求那?我們其實稍加改造即可。
hour函式可以獲得時間欄位的小時數和datediff來獲取兩個日期相差的天數。然後利用天數*24+hour的差值即為所求,
比如我們求2018-02-27 10:00:00 與 2018-02-25 12:00:00相差多少?
例項**如下:
select (hour('補充乙個:返回當前時間下再增加num_months個月的日期add_months(string start_date, int num_months)2018-02-27 10:00:00
')-hour('
2018-02-25 12:00:00
')+(datediff('
2018-02-27 10:00:00
','2018-02-25 12:00:00
'))*
24) as
hour_subvalue
--46
2.上面介紹了hour函式,那麼我們也會需要其他的時間提取,不多說直接看**,年月日時分秒:
select補充:quarter,返回當前本年度第幾個季度。year('
2018-02-27 10:00:00
'),month('
2018-02-27 10:00:00
'),day('
2018-02-27 10:00:00
'),hour('
2018-02-27 10:00:00
'),minute('
2018-02-27 10:00:00
'),second('
2018-02-27 10:00:00
'),weekofyear('
2018-02-27 10:00:00
');
--2018 2 27 10 0 0 9
3.日期轉換函式
to_date,語法: to_date(string timestamp),返回值為string型別的日期
示例如下:
select to_date('2018-02-27 10:03:01
') ;
--2018-02-27
last_day(string date),返回這個月的最後一天的日期。
select last_day('next_day,返回當前時間的下乙個星期幾所對應的日期 。如下2018-02-27 10:03:01');
--2018-02-28
select next_day('說明,輸入日期為2-27,下個星期的周二為03-06,如果想要知道下周一的日期就是mo,週日就是su,以此類推。2018-02-27 10:03:01
', 'tu'
);--
2018-03-06
我跟無數多小白說過,西方國家週日是每週的第一天,所以日曆和英語中都是現實週日再是周一,所以上面的下週日是3-4。注意嘍!
以上是我平時經常用的一些日期相關的處理和函式,比較方便,想不起來就過來掃一眼。畢竟hive用的比較少,相對於關係型資料庫的t-sql函式和方法還是比較low的,畢竟是個轉義工具。目前主流還是hivesql,不過慢慢的都在想sparksql之類技術的轉移了。以後有新的日期函式我會繼續想本文中進行彙總,方便大家查詢。
Hive 時間日期處理總結
獲取當前時間截 select unix timestamp 結果 1539595903獲取當前時間1 select current timestamp 結果 2018 10 15 17 34 09.721獲取當前時間2 select from unixtime unix timestamp 結果 2...
常用時間日期處理總結
時間處理是專案中不可缺少的,下面整理了一些常用時間處理的用法,記錄一下。1.獲取當前時間 1 function getnowtime 2.時間與天數相加 1 function gettimeadddays time,days 3.獲取並格式化日期 年 月 日 1 function getformat...
SQL時間日期處理
1.當前系統日期 時間 select getdate 2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 15 返回 2004 10 17 00 00 00.000 3.datediff...