達夢資料庫日期格式化 達夢資料庫時間型別的使用介紹

2021-10-19 06:43:44 字數 2084 閱讀 1968

在資料庫的日常使用過程中,無論是記錄服務啟動時間,還是儲存前端應用中的訂單時間,都離不開使用各類日期型別,本文就將給大家介紹dm7中各種時間型別的區別和使用注意事項。

一.dm7中時間日期型別簡介

dm7中常用的時間日期型別有這三種date,time,timestamp。

date 型別包括年、月、日資訊,定義了』-4712-01-01』和』9999-12-31』之間任何乙個有效的格里高利日期。

time型別包括時、分、秒資訊,定義了乙個在』00:00:00.000000』和』23:59:59.999999』之間的有效時間。time 型別的小數秒精度規定了秒字段中小數點後面的位數,取值範圍為 0~6,如果未定義,預設精度為0。

timestamp 型別包括年、月、日、時、分、秒資訊,定義了乙個在』-4712-01-01 00:00:00.000000』和』9999-12-31 23:59:59.999999』之間的有效格里高利日期時間。

timestamp 型別的小數秒精度規定了秒字段中小數點後面的位數,取值範圍為 0~6,如果未定義 , 預設精度為6。

二.date和timestamp的區別

根據上面的定義可以知道date型別只能儲存年月日,那當我們嘗試把乙個完整的時間存入date時會發生什麼呢?我們可以做如下測試:

declare

test1 date;

test2 date;

begin

set test1=to_date('2018-11-0115:20:10','yyyy-mm-ddhh24:mi:ss'); --存入時間1

set test2=to_date('2018-11-0117:20:10','yyyy-mm-ddhh24:mi:ss'); --存入時間2

if test1=test2 then

print'test1=test2'; --如果兩個值相同則顯示test1=test2

print test1;

elseif test1>test2 then

print'test1>test2';

print test1;

endif;

end;

執行結果如下:

可以看到,當我們嘗試把乙個包含年月日時分秒毫秒的完整時間存入date型別時,年月日之外的數值會被砍掉。因此,在對兩個數值進行比較時,得出來的是等號。在這種情況下,為避免資料丟失,我們需要timestamp來儲存完整的日期時間資訊。

三. 從oracle到dm的遷移

熟悉oracle的讀者應該了解,oracle的date型別中包括年、月、日、時、分、秒的資訊。因此,在做oracle到dm的資料遷移時,如果不對date型別做轉換,則可能會導致時、分、秒資料的丟失。這時,我們應將date型別轉化成dm中的timestamp,演示如下:

在oracle中建立例項表並錄入時間資料

create table t1 (aaa date);

insert into t1values(to_date('2018-11-01 15:20:10','yyyy-mm-dd hh24:mi:ss'));

commit;

這裡我們使用dts工具進行遷移,因篇幅關係這裡就不演示過程了,遷移完成後,在dm內可以查到對應的t1表以及資料。

表和資料已經遷移過來了,型別也被轉換成了timestamp,時、分、秒的資料並沒有丟失。這裡,有的讀者可能就會問了,為什麼date型別自己變成了timestamp,是不是我們在遷移的過程中做了什麼操作呢?

事實上,我在遷移的過程中並沒有手動指定資料型別對映。但是,當我們使用dts進行oracle到dm的遷移時,dts工具會自己對某些型別做轉換。

如圖所示,工具已經自動將date型別轉化成了timestamp型別。當然,遷移時型別的轉換還不止圖中這些,有興趣的讀者可以參考dts幫助文件中預設資料型別對映這一章節。

達夢資料庫和mysql索引引擎 達夢資料庫 索引

1.索引的種類和功能 聚集索引 每乙個普通表有且只有乙個聚集索引 唯一索引 索引資料根據索引鍵唯一 函式索引 包含函式 表示式的預先計算的值 位圖索引 對低基數的列建立位圖索引 位圖連線索引 針對兩個或者多個表連線的點陣圖索引,主要用於資料倉儲中 全文索引 在表的文字列上而建的索引。2.何時使用索引...

達夢資料庫操作

1.安裝 dminstall.bin i接下來是一些設定,比如 語言 key檔案的位置 時區 安裝型別 安裝目錄 略過 2.初始化 進入你剛才設定的安裝目錄的bin目錄下執行 dminit這是我自己的設定 input system dir home dmdba dmdata input db nam...

達夢資料庫使用

1 修改最大連線數 先檢視當前的最大連線數 select sf get para value 2,max sessions 修改最大連線數 alter system set max sessions 1000 spfile 重啟資料庫 su dmdba cd dmdbms dmservicedmse...