原時間格式:2020-09-19 00:15:32
目標格式:20200919
首先使用hive的函式進行轉換
1. to_date(
'2020-09-19 00:15:32')=
=>
2020-09
-192. regexp_replace('2020-09-19'
,'-'
,'')=
=>
20200919
結果語句:
regexp_replace(to_date(
'2020-09-19 00:15:32'),
'-','')
==>
20200919
兩個秒級時間格式進行相減得到分鐘數
原始資料:
2020-09-19 00:12:01
2020-09-19 00:11:46
使用的hive函式為: unix_timestamp :獲取當前時間戳
同時使用的是日期轉時間戳
unix_timestamp(
'2020-09-19 00:12:01'
)- unix_timestamp(
'2020-09-19 00:11:46'
)
當只有乙個引數時 unix_timestamp(string timestame),此時輸入的引數必須為』yyyy-mm-dd hh:mm:ss』格式,否則返回null
select unix_timestamp(『2019-08-15 16:40:00』) --1565858400
select unix_timestamp(『2019-08-15』) --null
當有兩個引數時,此時需要保證兩個引數的對應關係
select unix_timestamp(『2019-08-15』,『yyyy-mm-dd』) --1565798400
select unix_timestamp(『2019-08-15 16:40:00』,『yyyy-mm-dd hh:mm:ss』) --1565858400
select unix_timestamp(『2019-08-15』,『yyyy-mm-dd hh:mm:ss』) --null
最後的結算的結果為:
ceil(
(unix_timestamp(
'2020-09-19 00:12:01'
)- unix_timestamp(
'2020-09-19 00:11:46'))
/60 分鐘數(向上取整)
ceil(
(unix_timestamp(
'2020-09-19 00:12:01'
)- unix_timestamp(
'2020-09-19 00:11:46'))
/60/60 小時數(向上取整)
select datediff(from_unixtime(unix_timestamp(
'20150514'
,'yyyymmdd'),
'yyyy-mm-dd'
),from_unixtime(unix_timestamp(
'20150415'
,'yyyymmdd'),
'yyyy-mm-dd'))
from mid.dual;
結果為:29
select datediff(from_unixtime(unix_timestamp(
'20150514'
,'yyyymmdd'),
'yyyy/mm/dd'
), from_unixtime(unix_timestamp(
'20150415'
,'yyyymmdd'),
'yyyy/mm/dd'))
from mid.dual;
結果為null
hive不支援『/』的日期相減
HIVE 求解時間差 日期格式轉換
閱讀 1 將時間轉換成時間戳 2 將時間戳相減 3 注意單位 分鐘 毫秒 e.x.cast unix timestamp rt.refund ticket time unix timestamp rt.create time 60 as int 30 閱讀 在解析埋點資料時會遇到兩種不同的日期格式 ...
時間格式轉換
一 在mysql中完成 這種方式在mysql查詢語句中轉換,優點是不占用php解析器的解析時間,速度快,缺點是只能用在資料庫查詢中,有侷限性。1.unix時間戳轉換為日期用函式 from unixtime 一般形式 select from unixtime 1156219870 2.日期轉換為uni...
時間格式轉換
dateformat函式語法 g 年代標誌符 y 年m 月 d 日h 時 在上午或下午 1 12 h 時 在一天中 0 23 m 分s 秒 s 毫秒 e 星期 d 一年中的第幾天 f 一月中第幾個星期幾 w 一年中第幾個星期 w 一月中第幾個星期 a 上午 下午 標記符 k 時 在一天中 1 24 ...