日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

unix_timestamp 时间戳函数用法(hive)

發布時間:2025/7/14 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unix_timestamp 时间戳函数用法(hive) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、unix_timestamp函數用法?
1、unix_timestamp() 得到當前時間戳?
2、如果參數date滿足yyyy-MM-dd HH:mm:ss形式,則可以直接unix_timestamp(string date) 得到參數對應的時間戳?
3、如果參數date不滿足yyyy-MM-dd HH:mm:ss形式,則我們需要指定date的形式,在進行轉換?

select unix_timestamp('2009-03-20') --1237507200 select unix_timestamp('2009-03-20 00:00:00', 'yyyy-MM-dd HH:mm:ss') --1237507200 select unix_timestamp('2009-03-20 00:00:01', 'yyyy-MM-dd HH:mm:ss') --1237507201

?

二、from_unixtime函數用法?
語法:from_unixtime(t1,’yyyy-MM-dd HH:mm:ss’)?
其中t1是10位的時間戳值,即1970-1-1至今的秒,而13位的所謂毫秒的是不可以的。?
對于13位時間戳,需要截取,然后轉換成bigint類型,因為from_unixtime類第一個參數只接受bigint類型。例如:?

select from_unixtime(1237507201,'yyyy-MM-dd HH:mm:ss') -- 2009-03-20 00:00:01 select from_unixtime(1237507200,'yyyy-MM-dd HH:mm:ss') -- 2009-03-20 00:00:00常用的插入時間為當前系統時間 轉換成距離1970的時間戳,再轉換成當前時間select FROM_UNIXTIME(UNIX_TIMESTAMP() ,'yyyy-MM-dd HH:mm:ss') AS W_INSERT_DT

總結

1.Hive中獲取時間戳的方式為unix_timestamp()函數,該函數只能夠精確到秒級別的時間,對于時間精確到要求高的應用則該函數并不適合。

2.Hive獲取當前時間毫秒級別的時間戳時需要使用cast函數將current_timestamp()轉為double類型并乘以1000,則得到毫秒級別的時間戳。

3.對于Hive庫中存儲的毫秒精度的時間戳,為了確保時間精度不損失則需要使用to_utc_timestamp()函數,該函數支持毫秒級別的時間錯,但需要指定當前時區。

三? LAST_DAY 函數的用法

last_day 用impala不可以,用hive可以,獲取本月月末

SELECT LAST_DAY(CONCAT('${START_DATE}','-01')) --傳入2019-02 得到 2019-02-28 --傳入2019-02-01 得到 2019-02-28

?

?

Hive中TimeStamp獲取及轉換1.Hive中使用current_timestamp()函數獲取當前時間select current_timestamp(); --2019-07-04 10:17:08.429275000使用Hive的current_timestamp()函數獲取到當前的時間精確到毫秒。2.Hive中獲取當前時間戳,默認使用unix_timestamp()函數select unix_timestamp(current_timestamp()); --1562235446使用Hive的unix_timestamp()函數獲取到當前的時間戳為10位的bigint類型數值,該數值只精確到秒級別。3.Hive中將時間戳轉換為日期類型,默認使用from_unixtime ()select from_unixtime(1543735779, 'yyyy-MM-dd HH:mm:ss:SSS'); --2019-07-04 10:17:26:000上面的轉換結果可以看到時間的毫秒是無法正常獲取到,因為時間戳只是精確到秒級別的,from_unixtime()函數也只支持秒級別的時間戳轉換。4.Hive中獲取毫秒級別的時間戳select current_timestamp(), cast(current_timestamp() as double) as 'timestamp';current_timestamp() timestampcurrent_timestamp() timestamp 1 2019-07-04 10:20:34.743662000 1562235634.7436621這里可以看到獲取到了一個13位的數值,該數值精確到毫秒即為當前的時間的時間戳。5.Hive中處理毫秒級別的時間戳select to_utc_timestamp(1543736635303, 'GMT');--2018-12-02 15:43:55.303 --用impala不行使用Hive提供的to_utc_timestamp()函數將毫秒級別的時間戳轉換為相應的時間并且精確到了毫秒,與上一步獲取時間戳的時間一致。

select from_unixtime(cast(substring(tistmp,1,10) as bigint),’yyyy-MM-dd HH’) tim ,count(*) cn from hour_data where …

總結

以上是生活随笔為你收集整理的unix_timestamp 时间戳函数用法(hive)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。