大數據Spark Sql中日期轉換FROM_UNIXTIME和UNIX_TIMESTAMP的使用

眾所周知,數字整型用來大小比較和計算運算要比字符型快的多,因此部分業務需要把時間字段轉化為整型方便業務的快速計算和到達,這個整形數字是選定的日期距UTC 時間 '1970-01-01 00:00:00' 開始的秒數,目前為十位,比如常用來舉例的1234567890,但畢竟數字不方便觀察,後續還需要把這些時間數字轉換為真正的時間字段

這裡就需要兩個函數來進行轉換UNIX_TIMESTAMP和FROM_UNIXTIME

咱們一一介紹

UNIX_TIMESTAMP

是把時間字段轉化為整型,需要註意的是有些數據庫需要指明時間字段類型
比如MySQL裡是可以直接UNIX_TIMESTAMP('20200223'),而某些大數據平臺需要UNIX_TIMESTAMP('20200223','yyyyMMdd')

FROM_UNIXTIME

顧名思義就是從整型裡把時間整型進行破解成想要的時間格式,使用時可指定格式

這裡面經常用到的是UNIX_TIMESTAMP和FROM_UNIXTIME的結合,比如對一個時間字段進行歸集計算:把'2020-02-23 01:00:02','2020-02-23 01:02:31','2020-02-23 01:03:22'都歸集成'2020-02-23 01:00:00'

select FROM_UNIXTIME(unix_timestamp('20200223')+5*60*floor((substr('2020-02-23 
 00:01:02',12,2)*60+substr('2020-02-23 00:01:02',15,2))/5)) time1

補充下格式轉換:

%a	縮寫星期名
%b	縮寫月名
%c	月,數值
%D	帶有英文前綴的月中的天
%d	月的天,數值(00-31)
%e	月的天,數值(0-31)
%f	微秒
%H	小時 (00-23)
%h	小時 (01-12)
%I	小時 (01-12)
%i	分鐘,數值(00-59)
%j	年的天 (001-366)
%k	小時 (0-23)
%l	小時 (1-12)
%M	月名
%m	月,數值(00-12)
%p	AM 或 PM
%r	時間,12-小時(hh:mm:ss AM 或 PM)
%S	秒(00-59)
%s	秒(00-59)
%T	時間, 24-小時 (hh:mm:ss)
%U	周 (00-53) 星期日是一周的第一天
%u	周 (00-53) 星期一是一周的第一天
%V	周 (01-53) 星期日是一周的第一天,與 %X 使用
%v	周 (01-53) 星期一是一周的第一天,與 %x 使用
%W	星期名
%w	周的天 (0=星期日, 6=星期六)
%X	年,其中的星期日是周的第一天,4 位,與 %V 使用
%x	年,其中的星期一是周的第一天,4 位,與 %v 使用
%Y	年,4 位
%y	年,2 位

到此這篇關於大數據Spark Sql中日期轉換FROM_UNIXTIME和UNIX_TIMESTAMP的使用的文章就介紹到這瞭,更多相關Spark Sql 日期轉換內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: