Hive中與時間相關的內置函數

(1)獲取當前的時間戳(以秒位單位):unix_timestamp(),返回值類型位BIGINT。例如:

select unix_timestamp() from dim_user limit 1; ? ? // 在MySQL, Oracle中會有一個虛擬表dual用來做一些通用的查詢操作,但是hive中的表必須是注冊的表,不存在dual表,所以必須只指定一個存在的表,例如已注冊的dim_user表。

如果unix_timestamp()帶一個string類型的date, 則會將date代表的時間轉換為unix 時間。例如:

select unix_timestamp('2013-01-13 13:09:10') from dim_user limit 1; ? // 注意date的格式必須為yyyy-MM-dd HH:mm:ss

如果unix_timestamp()的第二個參數指定了date format,則會根據該format轉換成Unix時間戳。例如:

select unix_timestamp('2013-01-13 13:09:10','yyyy-MM-dd') from dim_user limit 1; ?//會忽略后面的小時等信息

(2)將時間戳轉換為指定格式的日期字符串: from_unixtime(BIGINT, 'format'),返回string類型,例如:

select from_unixtime(1476288000, 'yyyy-MM-dd') from dim_user limit 1;? ? // 返回2016-10-13

(3)日期增加函數:date_add(string startdate, interval), 返回string類型,例如:

select date_add('2016-10-12', 30) from dim_user limit 1;? ? ? // 返回2016-11-11

(4)日期減少函數:date_sub(string startdate, interval), 返回string類型,例如:

select date_sub('2016-10-12', 30) from dim_user limit 1;? ? ? // 返回2016-09-12

(5)日期間隔函數:datediff(string startdate, string endate),返回值為int類型, 例如:

select datediff('2016-10-19', '2016-09-20') from dim_user limit 1; // 返回29

(6)to_date(), year(),month(), day(), hour(), minute(), second() 分別獲取日期字符串的日期,年份,月份,天份, 小時,分鐘,秒數等,例如:

select to_date('2016-09-10 11:11:23') from dim_user limit 1;? // 返回2016-09-10

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容