為什么會同一條數(shù)據(jù),會有小時差異
恭喜你,十有八九,就是時區(qū)的問題:
首先要明確的是,我們中國的標(biāo)準(zhǔn)時區(qū)是東八區(qū),就是世界協(xié)調(diào)時間(UTC)加上八個小時,也就是UTC+8。
格林尼治標(biāo)準(zhǔn)時間
最坑的是美國時間,因為美國實行的是夏令時,也就是說美國是有兩個時區(qū)在一天內(nèi)來回切換,有幾個月是西六區(qū),有幾個月是西五區(qū)
所以,當(dāng)處理跨國公司,特別是美國的數(shù)據(jù)時,和我們相差13或14個小時都是正常的文章來源:http://www.zghlxwxcb.cn/news/detail-746973.html
如何處理呢?
很簡單,確定好原始庫的時區(qū),再確定好目標(biāo)庫的時區(qū),然后處理就可以了。
此時,第二個坑來了,請問,下面這個數(shù)據(jù)庫的時區(qū)是哪里?
恭喜你,你獲得了4個正確且標(biāo)準(zhǔn)的答案:
說它是美國時間、澳大利亞時間、中國時間、古巴時間,都對!那么這條數(shù)據(jù)到底是哪個時區(qū)呢?
1、直接問客戶!
2、根據(jù)時間差來算一下。
到了重點了,體現(xiàn)到數(shù)據(jù)層面,該如何處理呢?
處理方式也很簡單:
1、設(shè)置數(shù)據(jù)庫時區(qū)保持一致
2、寫數(shù)據(jù)時轉(zhuǎn)換一下,比如hive和spark的set spark.sql.session.timeZone=GMT+8; 等
3、簡單粗暴,直接加減,就是使用date_add之類的函數(shù),直接把相差的那幾個小時加回來或減回來文章來源地址http://www.zghlxwxcb.cn/news/detail-746973.html
到了這里,關(guān)于時區(qū)的坑:數(shù)據(jù)時間在不同數(shù)據(jù)庫中差8小時、13小時、14小時是怎么回事的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!