|
DATE數(shù)據(jù)類型 這個數(shù)據(jù)類型我們實在是太熟悉了,當(dāng)我們需要表示日期和時間的話都會想到date類型。它可以存儲 月,年,日,世紀(jì),時,分和秒。它典型地用來表示什么時候事情已經(jīng)發(fā)生或?qū)⒁l(fā)生。DATE數(shù)據(jù)類型的 問題在于它表示兩個事件發(fā)生時間間隔的度量粒度是秒。這個問題將在文章稍后討論timestamp的時候被 解決。可以使用TO_CHAR函數(shù)把DATE數(shù)據(jù)進(jìn)行傳統(tǒng)地包裝,達(dá)到表示成多種格式的目的。 SQL> SELECT TO_CHAR(date1,'MM/DD/YYYY HH24:MI:SS') "Date" FROM date_table; Date --------------------------- 06/20/2003 16:55:14 06/26/2003 11:16:36 我見到的大多數(shù)人陷入的麻煩就是計算兩個時間間的間隔年數(shù)、月數(shù)、天數(shù)、小時數(shù)和秒數(shù)。你需要 明白的是,當(dāng)你進(jìn)行兩個日期的相減運算的時候,得到的是天數(shù)。你需要乘上每天的秒數(shù)(1天=86400秒 ),然后,你可以再次計算得到你想要的間隔數(shù)。下面就是我的解決方法,可以精確計算出兩個時間的間 隔。我明白這個例子可以更簡短些,但是我是為了顯示所有的數(shù)字來強調(diào)計算方式。 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
|
|
|