ORACLE DATE和TIMESTAMP數據類型的比較(一)

原著作者:James Koopmann

如果你想在ORACLE中存儲DATE和時間信息的話,實際上你由兩種字段數據類型的選擇的話,就讓我們看看這兩種數據類型的差別和它們提供了些什麼。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

      DATE數據類型

這個數據類型我們實在是太熟悉了,當我們需要表示日期和時間的話都會想到date類型。它可以存儲月,年,日,世紀,時,分和秒。它典型地用來表示什麼時候事情已經發生或將要發生。DATE數據類型的問題在於它表示兩個事件發生時間間隔的度量粒度是秒。這個問題將在文章稍後討論timestamp的時候被解決。可以使用TO_CHAR函數把DATE數據進行傳統地包裝,達到表示成多種格式的目的。

 

我見到的大多數人陷入的麻煩就是計算兩個時間間的間隔年數、月數、天數、小時數和秒數。你需要明白的是,當你進行兩個日期的相減運算的時候,得到的是天數。你需要乘上每天的秒數(1=86400秒),然後,你可以再次計算得到你想要的間隔數。下面就是我的解決方法,可以精確計算出兩個時間的間隔。我明白這個例子可以更簡短些,但是我是爲了顯示所有的數字來強調計算方式。

 

TIMESTAMP 數據類型

DATE數據類型的主要問題是它粒度不能足夠區別出兩個事件哪個先發生。ORACLE已經在DATE數據類型上擴展出來了TIMESTAMP數據類型,它包括了所有DATE數據類型的年月日時分秒的信息,而且包括了小數秒的信息。如果你想把DATE類型轉換成TIMESTAMP類型,就使用CAST函數。

 

正如你看到的,在轉換後的時間段尾部有了一段“.000000”。這是因爲從date轉換過來的時候,沒有小數秒的信息,缺省爲0。而且顯示格式是按照參數NLS_TIMESTAMP_FORMAT定的缺省格式顯示。當你把一個表中date類型字段的數據移到另一個表的timestamp類型字段中去的時候,可以直接寫INSERT SELECT語句,oracle會自動爲你做轉換的。

 

發佈了29 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章