溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Hive日期格式如何轉(zhuǎn)換

發(fā)布時(shí)間:2022-06-23 13:42:52 來(lái)源:億速云 閱讀:208 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹了Hive日期格式如何轉(zhuǎn)換的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Hive日期格式如何轉(zhuǎn)換文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

    背景

    日期計(jì)算平時(shí)在業(yè)務(wù)取數(shù)時(shí)經(jīng)常涉及到,但是數(shù)據(jù)庫(kù)中經(jīng)常存放著不同的日期格式,有的存放是時(shí)間戳、有的是字符串等,這時(shí)需要對(duì)其進(jìn)行轉(zhuǎn)換才能提取到準(zhǔn)確的數(shù)據(jù),這里介紹的均是hive里面的函數(shù)功能,以下內(nèi)容均是業(yè)務(wù)的數(shù)據(jù)需求經(jīng)常使用的部分

    時(shí)間戳

    unix時(shí)間戳是從1970年1月1日(UTC/GMT的午夜)開(kāi)始所經(jīng)過(guò)的秒數(shù),不考慮閏秒,一般為10位的整數(shù)

    Hive日期格式如何轉(zhuǎn)換

    時(shí)間戳

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

    日期格式轉(zhuǎn)換

    時(shí)間戳--->正常的日期格式

    • 獲取當(dāng)前時(shí)間戳

    select unix_timestamp()
    • 把時(shí)間戳轉(zhuǎn)為正常的日期

    select from_unixtime(unix_timestamp(),'yyyy-MM-dd hh:mm:ss') as dt
    • 業(yè)務(wù)中有時(shí)存放的是包含毫秒的整數(shù),需要先轉(zhuǎn)換為秒

    select from_unixtime(cast(create_time/1000 as bigint),'yyyyMMdd') as dt

    字符串日期假如數(shù)據(jù)庫(kù)存放的是格式為:"yyyy-MM-dd hh:mm:ss"

    • 截取日期部分

    select substr('2021-10-22 17:34:56',1,10)
    2021-10-22
    • 字符串強(qiáng)制轉(zhuǎn)換,獲取日期

    select to_date('2021-10-22 17:34:56')
    2021-10-22
    • 也可以通過(guò)date_format實(shí)現(xiàn)

    select date_format('2021-10-22 17:34:56','yyyy-MM-dd')
    2021-10-22

    系統(tǒng)當(dāng)前日期

    • 當(dāng)前日期

    select current_date();
    2021-10-22
    • 字符串日期與系統(tǒng)當(dāng)前日期比較,這個(gè)在業(yè)務(wù)中經(jīng)常有用到

    select substr('2021-10-22 17:34:56',1,10)>current_date()
    false

    前一日/昨日

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

    前一日12點(diǎn)/昨日12點(diǎn)在業(yè)務(wù)中與截取的字符串日期進(jìn)行比較時(shí)用

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

    最近一個(gè)月/30天

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

    當(dāng)月第一天業(yè)務(wù)中經(jīng)常用在滾動(dòng)計(jì)算當(dāng)月每日的業(yè)績(jī)數(shù)據(jù)

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

    日期格式轉(zhuǎn)換 yyyyMMdd--->yyyy-MM-dd

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

    兩個(gè)日期相隔天數(shù)

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

    關(guān)于“Hive日期格式如何轉(zhuǎn)換”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Hive日期格式如何轉(zhuǎn)換”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI