国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Teradata日期時間格式轉換問題

2024-07-21 02:51:59
字體:
來源:轉載
供稿:網友

最近在入庫一大批數據,入了20多張表整整一天半時間,可謂是臉都僵了,然而就在處理日期型和時間型數據,通過自己的摸索,get到了一些套路,還是很開心的,趁請假還是好好總結一下吧!

鑒于日期型數據DATE通常是用YYYY-MM-DD的格式進行存儲查詢,而時間型數據TIME在網上我也沒看到太多參考,但是注意到數據庫是有TIME這個類型數據的,格式是HH:MM:SS,因此向著這兩個格式去對數據進行整理。

一般我們接到的日期時間型數據完整的文本是長這樣的:

2016/11/1 12:00:00 or 2016-11-01 12:00:00? or 2016/11/1 12:00

文本源數據通常將日期和時間都默認在一個字段?。而我的想法是:為了減輕后期數據查詢的難度,將日期時間型數據都整理為對應的日期時間型,即DATETIME,這樣后期就不用其他的cast等函數進行查詢。

因此處理的步驟為: 這里寫圖片描述 1、分割字段

  在UE編輯器中將日期時間型數據進行分割,如?2016/11/1 12:00:00分割成2016/11/1|12:00:00,其中|為分割符;

2、編輯數據入庫?腳本

  如果源數據的日期本來就是對應的'?YYYY-MM-DD'如: 2016-11-01(嚴格符合,否則出錯,2016-11-1也是不符合的)那么入庫的時候就可以直接指定字段類型:

日期字段名稱 DATE FORMAT(‘YYYY-MM-DD’)?

  那么分割后的時間字段同理,如果本來的格式就是HH:MM:SS,那么直接指定字段類型:

時間字段名稱 TIME

  如果源數據不是這種類型的格式,像?2016/11/1、2016/11/01這種,那么入庫的時候直接用varchar類型入庫就好,后期再處理。

3、格式處理

  入庫了以后,如果格式本來就是對應那兩種,那很好,收工檢查數據看看有沒有亂碼和重復數據就好;如果不是那兩種,那就要進行數據處理了。   一般入庫我會用一個temp作為表名,因為數據格式都比較純天然。入庫以后再建一個新表插入temp表的數據,插入的同時也對數據進行處理。   處理的過程: 

先用其他函數對數據進行處理,整理成對應的格式,最后用cast函數?對字段進行類型轉換。

  使用的函數:

casewhen +substring/index/length/||?

  這些函數自由組合,發揮自己的想象力即可。   簡單的來說就是使用 substring / index / length /函數對數據進行識別,用case when|| 處理數據,拼接成自己想要的樣子,不過要注意同樣的一列數據可能存在不同的情況,因此要借用case when來處理,不確定的話可以select一下試試先。   具體的函數功能看看Teradata SQL文檔即可,這里不詳細介紹了。   以下是幾個例子: 這里寫圖片描述 4、字段類型轉換

  通過以上步驟,基本上可以將數據處理成對應的格式,在外層再加一個select的語句進行最后的轉換即可。

  例如:

select cast(字段A? as DATE FORMAT 'YYYY-MM-DD') as date_name, cast(字段B as TIME) as time_namefrom (select ? case when length....else....end as 字段A ,case when length....else....end as 字段B from temp )? a ;

5、檢查

  將入庫的字段進行查詢檢查,看是否處理不當或者存在編碼問題,檢查數據量是否一致等等。?


上一篇:Sphinx 配置

下一篇:SphinxSE檢索語法

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 林口县| 东宁县| 得荣县| 平顶山市| 木里| 革吉县| 章丘市| 武宣县| 青神县| 中江县| 富源县| 独山县| 南陵县| 阳泉市| 襄汾县| 桃园市| 通辽市| 邯郸县| 兴义市| 杭锦后旗| 江门市| 新营市| 麦盖提县| 无锡市| 金山区| 西贡区| 岚皋县| 六枝特区| 田阳县| 额尔古纳市| 高淳县| 三台县| 聂荣县| 庆云县| 呼伦贝尔市| 昂仁县| 剑河县| 赫章县| 济宁市| 阳江市| 梅河口市|