首頁 > 軟體

Hive日期格式轉換方法總結

2022-06-23 14:00:43

背景

日期計算平時在業務取數時經常涉及到,但是資料庫中經常存放著不同的日期格式,有的存放是時間戳、有的是字串等,這時需要對其進行轉換才能提取到準確的資料,這裡介紹的均是hive裡面的函數功能,以下內容均是業務的資料需求經常使用的部分

時間戳

unix時間戳是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒,一般為10位的整數

一個線上工具:http://tools.jb51.net/code/unixtime

時間戳

字串日期如:'2021-10-21 19:25:50','2021-10-21 20:25:50.0','2021-10-21 20:25'

日期格式轉換

時間戳--->正常的日期格式

  • 獲取當前時間戳
select unix_timestamp()
  • 把時間戳轉為正常的日期
select from_unixtime(unix_timestamp(),'yyyy-MM-dd hh:mm:ss') as dt
  • 業務中有時存放的是包含毫秒的整數,需要先轉換為秒
select from_unixtime(cast(create_time/1000 as bigint),'yyyyMMdd') as dt

字串日期假如資料庫存放的是格式為:"yyyy-MM-dd hh:mm:ss"

  • 擷取日期部分
select substr('2021-10-22 17:34:56',1,10)
2021-10-22
  • 字串強制轉換,獲取日期
select to_date('2021-10-22 17:34:56')
2021-10-22
  • 也可以通過date_format實現
select date_format('2021-10-22 17:34:56','yyyy-MM-dd')
2021-10-22

系統當前日期

  • 當前日期
select current_date();
2021-10-22
  • 字串日期與系統當前日期比較,這個在業務中經常有用到
select substr('2021-10-22 17:34:56',1,10)>current_date()
false

前一日/昨日

select date_sub(current_date(),1);
2021-10-21

前一日12點/昨日12點在業務中與擷取的字串日期進行比較時用

select concat(date_format(date_sub(current_date(),1),'yyyy-MM-dd'),' ','12');
2021-10-21 12

最近一個月/30天

select date_sub(current_date(),30);
2021-09-22

當月第一天業務中經常用在捲動計算當月每日的業績資料

select date_format(to_date(trunc(current_date(),'MM')),"yyyy-MM-dd");
2021-10-01

日期格式轉換 yyyyMMdd--->yyyy-MM-dd

select from_unixtime(unix_timestamp('20211022','yyyyMMdd'),"yyyy-MM-dd");
2021-10-22

兩個日期相隔天數

select datediff('2021-10-22', '2021-10-01');
21

相關參考

Hive HQL支援的2種查詢語句風格,你喜歡哪一種?

Python 基於datetime庫的日期時間資料處理

以上就是Hive日期格式轉換方法總結的詳細內容,更多關於Hive日期格式轉換的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com