日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unix_timestamp 时间戳函数用法(hive)

發(fā)布時(shí)間:2025/7/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unix_timestamp 时间戳函数用法(hive) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

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函數(shù)用法?
語法:from_unixtime(t1,’yyyy-MM-dd HH:mm:ss’)?
其中t1是10位的時(shí)間戳值,即1970-1-1至今的秒,而13位的所謂毫秒的是不可以的。?
對于13位時(shí)間戳,需要截取,然后轉(zhuǎn)換成bigint類型,因?yàn)閒rom_unixtime類第一個(gè)參數(shù)只接受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常用的插入時(shí)間為當(dāng)前系統(tǒng)時(shí)間 轉(zhuǎn)換成距離1970的時(shí)間戳,再轉(zhuǎn)換成當(dāng)前時(shí)間select FROM_UNIXTIME(UNIX_TIMESTAMP() ,'yyyy-MM-dd HH:mm:ss') AS W_INSERT_DT

總結(jié)

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

2.Hive獲取當(dāng)前時(shí)間毫秒級別的時(shí)間戳?xí)r需要使用cast函數(shù)將current_timestamp()轉(zhuǎn)為double類型并乘以1000,則得到毫秒級別的時(shí)間戳。

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

三? LAST_DAY 函數(shù)的用法

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

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

?

?

Hive中TimeStamp獲取及轉(zhuǎn)換1.Hive中使用current_timestamp()函數(shù)獲取當(dāng)前時(shí)間select current_timestamp(); --2019-07-04 10:17:08.429275000使用Hive的current_timestamp()函數(shù)獲取到當(dāng)前的時(shí)間精確到毫秒。2.Hive中獲取當(dāng)前時(shí)間戳,默認(rèn)使用unix_timestamp()函數(shù)select unix_timestamp(current_timestamp()); --1562235446使用Hive的unix_timestamp()函數(shù)獲取到當(dāng)前的時(shí)間戳為10位的bigint類型數(shù)值,該數(shù)值只精確到秒級別。3.Hive中將時(shí)間戳轉(zhuǎn)換為日期類型,默認(rèn)使用from_unixtime ()select from_unixtime(1543735779, 'yyyy-MM-dd HH:mm:ss:SSS'); --2019-07-04 10:17:26:000上面的轉(zhuǎn)換結(jié)果可以看到時(shí)間的毫秒是無法正常獲取到,因?yàn)闀r(shí)間戳只是精確到秒級別的,from_unixtime()函數(shù)也只支持秒級別的時(shí)間戳轉(zhuǎn)換。4.Hive中獲取毫秒級別的時(shí)間戳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這里可以看到獲取到了一個(gè)13位的數(shù)值,該數(shù)值精確到毫秒即為當(dāng)前的時(shí)間的時(shí)間戳。5.Hive中處理毫秒級別的時(shí)間戳select to_utc_timestamp(1543736635303, 'GMT');--2018-12-02 15:43:55.303 --用impala不行使用Hive提供的to_utc_timestamp()函數(shù)將毫秒級別的時(shí)間戳轉(zhuǎn)換為相應(yīng)的時(shí)間并且精確到了毫秒,與上一步獲取時(shí)間戳的時(shí)間一致。

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。