亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

ORACLE DATE和TIMESTAMP數據類型的比較

2024-08-29 13:49:47
字體:
來源:轉載
供稿:網友
  DATE數據類型
  
  這個數據類型我們實在是太熟悉了,當我們需要表示日期和時間的話都會想到date類型。它可以存儲月,年,日,世紀,時,分和秒。它典型地用來表示什么時候事情已經發生或將要發生。DATE數據類型的問題在于它表示兩個事件發生時間間隔的度量粒度是秒。這個問題將在文章稍后討論timestamp的時候被解決??梢允褂肨O_CHAR函數把DATE數據進行傳統地包裝,達到表示成多種格式的目的。
  
  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
  
  我見到的大多數人陷入的麻煩就是計算兩個時間間的間隔年數、月數、天數、小時數和秒數。你需要明白的是,當你進行兩個日期的相減運算的時候,得到的是天數。你需要乘上天天的秒數(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  TIMESTAMP數據的格式化顯示和DATE 數據一樣。注重,to_char函數支持date和timestamp,但是trunc卻不支持TIMESTAMP數據類型。這已經清楚表明了在當兩個時間的差別極度重要的情況下,使用TIMESTAMP數據類型要比DATE數據類型更確切。
  
  假如你想顯示TIMESTAMP的小數秒信息,參考下面:
  
  1 SELECT TO_CHAR(time1,'MM/DD/YYYY HH24:MI:SS:FF3') "Date" FROM date_table
  
  Date
  
  -----------------------
  
  06/20/2003 16:55:14:000
  
  06/26/2003 11:16:36:000
  

  在上例中,我只現實了小數點后3位的內容。
  
  計算timestamp間的數據差別要比老的date數據類型更輕易。當你直接相減的話,看看會發生什么。結果將更輕易理解,第一行的17天,18小時,27分鐘和43秒。
  
  1 SELECT time1,
  
   2     time2,
  
   3     substr((time2-time1),instr((time2-time1),' ')+7,2)         seconds,
  
   4     substr((time2-time1),instr((time2-time1),' ')+4,2)         minutes,
  
   5     substr((time2-time1),instr((time2-time1),' ')+1,2)         hours,
  
   6     trunc(to_number(substr((time2-time1),1,instr(time2-time1,' '))))  days,
  
   7     trunc(to_number(substr((time2-time1),1,instr(time2-time1,' ')))/7) weeks
  
   8*  FROM date_table
  
  TIME1            TIME2           SECONDS MINUTES HOURS DAYS WEEKS
  
  -------------------------  -------------------------- ------- ------- ----- ---- -----
  
  06/20/2003:16:55:14:000000 07/08/2003:11:22:57:000000 43   27   18  17  2
  
  06/26/2003:11:16:36:000000 07/08/2003:11:22:57:000000 21   06   00  12  1
  
  這就意味著不再需要關心一天有多少秒在麻煩的計算中。因此,得到天數、月數、天數、時數、分鐘數和秒數就成為用substr函數摘取出數字的事情了。
  
  系統日期和時間
  
  為了得到系統時間,返回成date數據類型。你可以使用sysdate函數。
  
  SQL> SELECT SYSDATE FROM DUAL;
  
  為了得到系統時間,返回成timestamp數據類型。你可以使用systimpstamp函數。
  
  SQL> SELECT SYSTIMESTAMP FROM DUAL;
  
  你可以設置初始化參數FIXED_DATE指定sysdate函數返回一個固定值。這用在測試日期和時間敏感的代碼。注重,這個參數對于systimestamp函數無效。
  
  SQL> ALTER SYSTEM SET fixed_date = '2003-01-01-10:00:00';
  
  System altered.
  
  SQL> select sysdate from dual;
  
  SYSDATE
  
  ---------
  
  01-JAN-03
  
  SQL> select systimestamp from dual;
  
  SYSTIMESTAMP
  
  ---------------------------------------------------------
  
  09-JUL-03 11.05.02.519000 AM -06:00
  
  當使用date和timestamp類型的時候,選擇是很清楚的。你可以隨意處置date和timestamp類型。當你試圖轉換到更強大的timestamp的時候,需要注重,它們既有類似的地方,更有不同的地方,而足以造成破壞。兩者在簡潔和間隔尺寸方面各有優勢,請合理地選擇。


上一篇:六則Oracle數據庫系統使用經驗

下一篇:配置支持MTS下分布事務的Oracle

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人中文字幕| 中文字幕亚洲综合久久| 欧美黄色小视频| 精品日韩美女的视频高清| 国产在线观看精品| 国产97在线|亚洲| 欧美黑人性生活视频| 疯狂做受xxxx高潮欧美日本| 欧美午夜性色大片在线观看| 国产视频在线一区二区| 欧美黄色性视频| 欧美亚洲国产精品| 欧美在线观看一区二区三区| 亚洲精品国产精品久久清纯直播| 久久精品99无色码中文字幕| 国产ts人妖一区二区三区| 色偷偷av一区二区三区乱| 欧美性猛交xxxx黑人| 欧美极品在线视频| 亚洲国产精品视频在线观看| 日韩国产高清污视频在线观看| 欧美日韩国产一中文字不卡| 欧美乱大交做爰xxxⅹ性3| 亚洲精品一区av在线播放| 日韩av在线天堂网| 国内精品一区二区三区| 日韩欧美精品在线观看| 亚洲精品资源在线| 亚洲福利视频二区| 中文字幕自拍vr一区二区三区| 永久免费精品影视网站| 韩国v欧美v日本v亚洲| 在线视频国产日韩| 欧美成人激情视频免费观看| 亚洲自拍小视频免费观看| 日韩国产精品一区| 亚洲黄色av女优在线观看| 久久久久久18| 国产精品视频999| 亚洲人av在线影院| 久久精品成人动漫| 日本精品久久久久影院| 精品国产乱码久久久久久虫虫漫画| 91久久国产综合久久91精品网站| 国产成人jvid在线播放| 日韩精品在线免费| 亚洲第一黄色网| 国产精品久久久久久av福利| 欧美国产日韩一区二区三区| 亚洲国产精品网站| 亚洲午夜未满十八勿入免费观看全集| 国产一区二中文字幕在线看| 欧美激情va永久在线播放| 国产手机视频精品| 亚洲国产天堂久久综合| 亚洲精品国精品久久99热| 亚洲欧美www| 91亚洲一区精品| 日韩av一区二区在线观看| 欧美成人在线网站| 亚洲最新av网址| 97av在线视频| xxxxxxxxx欧美| 日韩精品免费一线在线观看| 91精品视频网站| 亚洲欧洲视频在线| 中文字幕欧美亚洲| 91九色蝌蚪国产| 精品亚洲aⅴ在线观看| 久久精品影视伊人网| 国产精品美女免费| 成人精品视频99在线观看免费| 国产精品极品在线| 国产精品久久999| 国产一区玩具在线观看| 国产成人精品av在线| 8x海外华人永久免费日韩内陆视频| 欧美性猛xxx| 伊人久久综合97精品| 2019国产精品自在线拍国产不卡| 久久久久日韩精品久久久男男| 国产欧美精品一区二区三区介绍| 久久久精品影院| 精品国产一区二区三区久久久狼| 亚洲国产小视频在线观看| 欧美日韩国产丝袜另类| 亚洲综合精品伊人久久| 中文字幕av一区二区三区谷原希美| 91亚洲午夜在线| 亚洲аv电影天堂网| 国产专区精品视频| 国产亚洲人成a一在线v站| 亚洲日韩欧美视频| 色无极影院亚洲| 久久久亚洲欧洲日产国码aⅴ| 日韩免费在线观看视频| 日韩av大片免费看| www.欧美三级电影.com| 亚洲第一天堂无码专区| 国产91网红主播在线观看| 激情久久av一区av二区av三区| www.欧美精品一二三区| 亚洲影院在线看| 成人在线观看视频网站| 在线午夜精品自拍| 日韩中文字幕视频在线| 亚洲精品之草原avav久久| 91网站在线看| 欧美怡春院一区二区三区| 亚洲国产另类久久精品| 国产精品久久久久福利| 2021久久精品国产99国产精品| 亚洲天堂成人在线视频| 日韩av中文字幕在线| 色先锋资源久久综合5566| 亚洲精品久久久久久下一站| 成人午夜高潮视频| 在线电影中文日韩| 国产一区二区香蕉| 欧美有码在线观看| 亚洲自拍在线观看| 亚洲永久在线观看| 亚洲深夜福利网站| 中文字幕一区二区三区电影| 久久国产色av| 日韩有码视频在线| 韩日精品中文字幕| 亚洲一区中文字幕在线观看| 日韩有码在线观看| 91精品国产沙发| 国产美女久久精品| 亚洲免费视频观看| 久久亚洲影音av资源网| 国产精品久久久久久久久久小说| 亚洲男人天堂2019| 久久青草精品视频免费观看| 亚洲欧洲成视频免费观看| 亚洲午夜久久久影院| 欧美一级黑人aaaaaaa做受| 欧美精品在线第一页| 日韩中文字幕在线播放| 日韩综合视频在线观看| 激情亚洲一区二区三区四区| 久久精品一本久久99精品| 97人人模人人爽人人喊中文字| 在线视频免费一区二区| 91香蕉电影院| 一区二区三区视频免费| 日韩中文理论片| 韩曰欧美视频免费观看| 久久天堂av综合合色| 久久精品国产一区二区电影| 欧美最近摘花xxxx摘花| 亚洲欧美日韩国产中文专区| 日韩在线观看你懂的| 北条麻妃一区二区三区中文字幕| 国产精品黄色av| 国产精品久久久久久久久久久久久久| 麻豆成人在线看| 亚洲色图25p| 日韩电影大全免费观看2023年上| 久久久亚洲国产| 成人看片人aa| 国产成人97精品免费看片|