大數(shù)據(jù)Spark Sql中日期轉(zhuǎn)換FROM_UNIXTIME和UNIX_TIMESTAMP的使用
眾所周知,數(shù)字整型用來(lái)大小比較和計(jì)算運(yùn)算要比字符型快的多,因此部分業(yè)務(wù)需要把時(shí)間字段轉(zhuǎn)化為整型方便業(yè)務(wù)的快速計(jì)算和到達(dá),這個(gè)整形數(shù)字是選定的日期距UTC 時(shí)間 '1970-01-01 00:00:00' 開(kāi)始的秒數(shù),目前為十位,比如常用來(lái)舉例的1234567890,但畢竟數(shù)字不方便觀察,后續(xù)還需要把這些時(shí)間數(shù)字轉(zhuǎn)換為真正的時(shí)間字段
這里就需要兩個(gè)函數(shù)來(lái)進(jìn)行轉(zhuǎn)換UNIX_TIMESTAMP和FROM_UNIXTIME
咱們一一介紹
UNIX_TIMESTAMP
是把時(shí)間字段轉(zhuǎn)化為整型,需要注意的是有些數(shù)據(jù)庫(kù)需要指明時(shí)間字段類(lèi)型
比如MySQL里是可以直接UNIX_TIMESTAMP('20200223'),而某些大數(shù)據(jù)平臺(tái)需要UNIX_TIMESTAMP('20200223','yyyyMMdd')
FROM_UNIXTIME
顧名思義就是從整型里把時(shí)間整型進(jìn)行破解成想要的時(shí)間格式,使用時(shí)可指定格式
這里面經(jīng)常用到的是UNIX_TIMESTAMP和FROM_UNIXTIME的結(jié)合,比如對(duì)一個(gè)時(shí)間字段進(jìn)行歸集計(jì)算:把'2020-02-23 01:00:02','2020-02-23 01:02:31','2020-02-23 01:03:22'都?xì)w集成'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
補(bǔ)充下格式轉(zhuǎn)換:
%a 縮寫(xiě)星期名 %b 縮寫(xiě)月名 %c 月,數(shù)值 %D 帶有英文前綴的月中的天 %d 月的天,數(shù)值(00-31) %e 月的天,數(shù)值(0-31) %f 微秒 %H 小時(shí) (00-23) %h 小時(shí) (01-12) %I 小時(shí) (01-12) %i 分鐘,數(shù)值(00-59) %j 年的天 (001-366) %k 小時(shí) (0-23) %l 小時(shí) (1-12) %M 月名 %m 月,數(shù)值(00-12) %p AM 或 PM %r 時(shí)間,12-小時(shí)(hh:mm:ss AM 或 PM) %S 秒(00-59) %s 秒(00-59) %T 時(shí)間, 24-小時(shí) (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 位
到此這篇關(guān)于大數(shù)據(jù)Spark Sql中日期轉(zhuǎn)換FROM_UNIXTIME和UNIX_TIMESTAMP的使用的文章就介紹到這了,更多相關(guān)Spark Sql 日期轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
postgres 數(shù)據(jù)庫(kù)中的數(shù)據(jù)轉(zhuǎn)換
postgres8.3以后,字段數(shù)據(jù)之間的默認(rèn)轉(zhuǎn)換取消了。如果需要進(jìn)行數(shù)據(jù)變換的話,在postgres數(shù)據(jù)庫(kù)中,我們可以用"::"來(lái)進(jìn)行字段數(shù)據(jù)的類(lèi)型轉(zhuǎn)換。2009-07-07[數(shù)據(jù)庫(kù)] 通用分頁(yè)存儲(chǔ)過(guò)程
[數(shù)據(jù)庫(kù)] 通用分頁(yè)存儲(chǔ)過(guò)程...2007-02-02在CRUD操作中與業(yè)務(wù)無(wú)關(guān)的SQL字段賦值的方法
這篇文章主要介紹了在CRUD操作中與業(yè)務(wù)無(wú)關(guān)的SQL字段賦值的方法的相關(guān)資料,需要的朋友可以參考下2016-04-04SQL語(yǔ)句優(yōu)化之JOIN和LEFT JOIN 和 RIGHT JOIN語(yǔ)句的優(yōu)化
在數(shù)據(jù)庫(kù)的應(yīng)用中,我們經(jīng)常需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行多表查詢,然而當(dāng)數(shù)據(jù)量非常大時(shí)多表查詢會(huì)對(duì)執(zhí)行效率產(chǎn)生非常大的影響,因此我們?cè)谑褂肑OIN和LEFT JOIN 和 RIGHT JOIN語(yǔ)句時(shí)要特別注意2018-03-03數(shù)據(jù)庫(kù) SQL千萬(wàn)級(jí)數(shù)據(jù)規(guī)模處理概要
我在前年遇到過(guò)過(guò)億條的數(shù)據(jù)。以至于一個(gè)處理過(guò)程要幾個(gè)小時(shí)的。后面慢慢優(yōu)化,查找一些經(jīng)驗(yàn)文章。才學(xué)到了一些基本方法。綜合敘之,與君探討之。2009-07-07如何判斷a、b、c三個(gè)字段同時(shí)為0則不顯示這條數(shù)據(jù)
有時(shí)候我們需要判斷當(dāng)a、b、c三個(gè)字段同時(shí)為0則不顯示,下面這個(gè)方法不錯(cuò),需要的朋友可以參考下2013-08-08大數(shù)據(jù)之Spark基礎(chǔ)環(huán)境
本篇文章開(kāi)始介紹Spark基礎(chǔ)知識(shí),包括Spark誕生的背景,應(yīng)用環(huán)境以及入門(mén)案例等,感興趣的同學(xué)可以參考閱讀本文2023-04-04