ORACLE DATE和TIMESTAMP資料型別的比較(一) (轉)
原著作者:James Kmann
如果你想在中DATE和時間資訊的話,實際上你由兩種欄位資料型別的選擇的話,就讓我們看看這兩種資料型別的差別和它們提供了些什麼。:namespace prefix = o ns = "urn:schemas--com::office" />
DATE資料型別
這個資料型別我們實在是太熟悉了,當我們需要表示日期和時間的話都會想到date型別。它可以儲存月,年,日,世紀,時,分和秒。它典型地用來表示什麼時候事情已經發生或將要發生。DATE資料型別的問題在於它表示兩個事件發生時間間隔的度量粒度是秒。這個問題將在文章稍後討論timestamp的時候被解決。可以使用TO_CHAR把DATE資料進行傳統地包裝,達到表示成多種格式的目的。
> TO_CHAR(date1,'MM/DD/YYYY HH24:MI:SS') "Date" FROM date_table;
Date
---------------------------
06/20/ 16:55:14
06/26/2003 11:16:36
我見到的大多數人陷入的麻煩就是計算兩個時間間的間隔年數、月數、天數、小時數和秒數。你需要明白的是,當你進行兩個日期的相減運算的時候,得到的是天數。你需要乘上每天的秒數(1天=86400秒),然後,你可以再次計算得到你想要的間隔數。下面就是我的解決方法,可以精確計算出兩個時間的間隔。我明白這個例子可以更簡短些,但是我是為了顯示所有的數字來強調計算方式。
1 SELECT TO_CHAR(date1,'MMDDYYYY:HH24:MI:SS') date1,
2 TO_CHAR(date2,'MMDDYYYY:HH24:MI:SS') date2,
3 trunc(86400*(date2-date1))-
4 60*(trunc((86400*(date2-date1))/60)) seconds,
5 trunc((86400*(date2-date1))/60)-
6 60*(trunc(((86400*(date2-date1))/60)/60)) minutes,
7 trunc(((86400*(date2-date1))/60)/60)-
8 24*(trunc((((86400*(date2-date1))/60)/60)/24)) hours,
9 trunc((((86400*(date2-date1))/60)/60)/24) days,
10 trunc(((((86400*(date2-date1))/60)/60)/24)/7) weeks
11* FROM date_table
DATE1 DATE2 SECONDS MINUTES HOURS DAYS WEEKS
----------------- ----------------- ---------- ---------- ---------- ---------- ----------
06202003:16:55:14 07082003:11:22:57 43 27 18 17 2
06262003:11:16:36 07082003:11:22:57 21 6 0 12 1
TIMESTAMP 資料型別
DATE資料型別的主要問題是它粒度不能足夠區別出兩個事件哪個先發生。ORACLE已經在DATE資料型別上擴充套件出來了TIMESTAMP資料型別,它包括了所有DATE資料型別的年月日時分秒的資訊,而且包括了小數秒的資訊。如果你想把DATE型別轉換成TIMESTAMP型別,就使用CAST函式。
SQL> SELECT CAST(date1 AS TIMESTAMP) "Date" FROM t;
Date
-----------------------------------------------------
20-JUN-03 04.55.14.000000 PM
26-JUN-03 11.16.36.000000 AM
正如你看到的,在轉換後的時間段尾部有了一段“.000000”。這是因為從date轉換過來的時候,沒有小數秒的資訊,預設為0。而且顯示格式是按照引數NLS_TIMESTAMP_FORMAT定的預設格式顯示。當你把一個表中date型別欄位的資料移到另一個表的timestamp型別欄位中去的時候,可以直接寫INSERT SELECT語句,oracle會自動為你做轉換的。
1 SELECT TO_CHAR(time1,'MM/DD/YYYY HH24:MI:SS') "Date" FROM date_table
Date
-------------------
06/20/2003 16:55:14
06/26/2003 11:16:36
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981599/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE DATE和TIMESTAMP資料型別的比較(二) (轉)Oracle資料型別
- oracle資料型別date和timestamp的轉化Oracle資料型別
- Oracle date 型別比較和String比較Oracle型別
- oracle中date資料型別與timestamp資料型別的轉換Oracle資料型別
- Mysql日期(DATE, TIME, DATETIME, TIMESTAMP)型別的比較MySql型別
- oracle timestamp轉換date及date型別相減Oracle型別
- ORACLE DATE型別和TIMESTAMP型別DUMP換算Oracle型別
- oracle將表中date資料型別修改為timestamp資料型別Oracle資料型別
- date和timestamp型別之間的轉換型別
- MySQL 的 timestamp 和 datetime 型別比較MySql型別
- 將timestamp型別轉換為date型別型別
- Oracle中Date和Timestamp的區別Oracle
- ORACLE TIMESTAMP資料型別Oracle資料型別
- Oracle三種集合資料型別的比較Oracle資料型別
- Oracle中的TIMESTAMP資料型別Oracle資料型別
- date、timestamp欄位型別型別
- Oracle的 資料型別比較及注意事項Oracle資料型別
- Oracle timestamp型別轉換date格式指令碼(精確到秒)Oracle型別指令碼
- XML Schema和XML DTD的資料型別比較XML資料型別
- (轉)PLS_INTEGER型別與timestamp型別、date、及時間函式型別函式
- mysql資料庫時間型別datetime、bigint、timestamp的查詢效率比較MySql資料庫型別
- MySQL TEXT、DATE、SET 資料型別(轉)MySql資料型別
- C#插入Oracle中Timestamp型別資料C#Oracle型別
- mysql 資料型別TIMESTAMPMySQL 資料型別
- Sqlserver:timestamp資料型別SQLServer資料型別
- timestamp資料型別求差資料型別
- 關於Oracle字元型別的比較Oracle字元型別
- PHP基礎-資料型別-string和int比較PHP資料型別
- oracle的timestamp型別使用Oracle型別
- Oracle中的TIMESTAMP型別Oracle型別
- ORACLE的資料型別(轉)Oracle資料型別
- mysql資料庫date 、datetime、time、timestamp區別MySql資料庫
- 關於timestamp資料型別資料型別
- 《卸甲筆記》-PostgreSQL和Oracle的資料型別的對比系列四:大資料型別筆記SQLOracle資料型別大資料
- mysql資料庫中decimal資料型別比較大小MySql資料庫Decimal資料型別
- Mysql中的Datetime和Timestamp比較MySql
- 字串和Date型別之間的轉換字串型別
- 【轉】ORACLE資料型別Oracle資料型別