日期處理函數
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))