HIVE SQL教程


日期處理函數

1.date_format:將日期進行格式化

語法:date_format(日期,格式)

作用:把一個字符串日期格式化為指定的格式

年月日,時分秒:'yyyy-MM-dd HH:mm:ss'

select date_format('2017-01-01','yyyy-MM-dd HH:mm:ss');  --日期字符串必須滿足yyyy-MM-dd格式    

2.date_add、date_sub函數(加減日期)

作用:把一個字符串日期格式加一天、減一天。

select date_add('2019-01-01',1); --字符串必須滿足yyyy-MM-dd格式

select date_sub('2019-01-01',1); --字符串必須滿足yyyy-MM-dd格式 

select to_char(date_sub(from_unixtime(unix_timestamp(now(),'YYYY-MM-DD HH:mm:ss'),'yyyy-MM-dd'),30),'yyyymmdd')

3.next_day函數

作用:得到一個字符串日期的下周幾的具體日期

星期日 Sunday Sun.

星期一 Monday Mon.

星期二 Tuesday Tues.

星期三 Wednesday Wed.

星期四 Thursday Thur./Thurs.

星期五 Friday Fri.

星期六 Saturday Sat.

select next_day('2020-01-01','Fri');    --得到2020-01-01往后的第一個周五

4.last_day函數(求當月最后一天日期)

作用:求當月的最后一天日期

select last_day('2020-01-01');

結果:select last_day('2020-01-01');

5.獲取當月第一天

TRUNC函數為指定元素而截去的日期值。
其具體的語法格式如下:
TRUNC(date[,fmt])
其中:date 一個日期值
fmt 日期格式,該日期將由指定的元素格式所截去。忽略它則由最近的日期截去

select trunc(date('2021-08-04'),'MM')

6.獲取當前時間

current_date

或者

now()

current_date()

  作用:得到當前的日期字符串

select current_date();

  結果:2020-01-01

時間戳處理函數

1.unix_timestemp

語法:('日期字符串',‘pattern’)   

作用:把指定格式的日期轉成時間戳,即轉換成距離最早的時間之間的秒數

默認不填pattern的話,輸入的日期字符串格式必須為:'yyyy-MM-dd HH:dd:ss',否則會返回空

例如:select unix_timestamp('2021-08-04 17:48:48')

如果不填任何參數就是當前系統時間戳

例如:select unix_timestamp()

結果為:

1628071166

日期格式必須和pattern指定格式一樣,否則返回空

select unix_timestamp('2021-08-04 17:48:48','yyyy-MM-dd HH:mm:ss')

2.from_unixtime

語法:(‘bigint時間戳’,‘pattern’)函數

作用:把一個大數字時間戳,轉換為指定格式的日期字符串

select from_unixtime(1517725479,'yyyy-MM-dd HH:dd:ss');

select from_unixtime(1517725479,'yyyyMMdd');

結果:2018-02-04 14:04:39

20180204

常把1和2一起用

select from_unixtime(unix_timestamp(now(),'yyyy-MM-dd HH:mm:ss'))

3.dateadd函數

減去指定周期時間,

hh:小時、mi:分鍾、ss是秒

dd:日、MM:月

select dateadd(from_unixtime(unix_timestamp('2021-08-05 13:00:00','yyyy-MM-dd HH:mm:ss')),-60,'mi')

字符串處理函數

1.to_char

將日期類型的時間,轉換成時間字符串,並按照指定格式輸出

月是小mm:yyyymmdd

select to_char(dateadd(from_unixtime(unix_timestamp('2021-08-05 13:00:00','yyyy-MM-dd HH:mm:ss')),-60,'mi'),'yyyymmdd')

2.cast字符串轉換為int

方法1:

cast(start_time AS BIGINT) 

方法2:

select unix_timestamp()-int(unix_timestamp(event_time))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM