關於timestamp資料型別

YallonKing發表於2012-03-16
關於timestamp資料型別
 很早就知道oracle有timestamp這種資料型別,不過沒有怎麼用過,也就沒有深入瞭解了。
 用的較多的就是date資料型別,當然此資料型別可以解決當前工作中很多和時間相關的問題,也可以使用oracle很多自帶的日期函式。
 今天開發那邊的需求需要精度更高的時間列,於是就想到了oracle的timestamp資料型別。
 
 timestamp資料型別說明
  timestamp資料型別可以儲存精度到秒小數後0-9位,預設為6位,也就是說此資料型別可以儲存的精度是十幾億分之一秒的日期。當然此資料型別和date也一樣儲存年、月、日、時、分、秒。
  
 以下為具體操作示例:
 1、帶時區的timestamp
 SQL> create table yallonking_zone(id number,my_time timestamp(9) with time zone);
 Table created.
 SQL> insert into yallonking_zone values(1,sysdate);
 1 row created.
 SQL> insert into yallonking_zone values(2,systimestamp);
 1 row created.
 SQL> select * from yallonking_zone;
 ID MY_TIME
 -- ---------------------------------------------------------------------------
 1 16-3月 -12 09.48.00.000000000 上午 +08:00
 2 16-3月 -12 09.48.08.692798000 上午 +08:00
 此處可見,timestamp資料型別顯示的當前時間是比UTC(通用協調時間)遲8個小時。
 
 2、不帶時區的timestamp
 SQL> create table yallonking(id number,my_time timestamp);
 Table created.
 SQL> insert into yallonking values(1,sysdate);
 1 row created.
 SQL> insert into yallonking values(2,systimestamp);
 1 row created.
 SQL> select * from yallonking;
 ID MY_TIME
 -- ---------------------------------------------------------------------------
 1 16-3月 -12 09.47.12.000000 上午
 2 16-3月 -12 09.47.21.559822 上午
   
 此處可見,timestamp資料型別預設是秒之後6位小數。
 
 3、timestamp與oracle日期函式相關
 SQL> select to_char(add_months(last_day(max(least(my_time))),1),'yyyy/mm/dd hh24:mi:ss') as my_time_new from yallonking_zone;
 MY_TIME_NEW
 ---------------------------------------------------------------------------
 2012/04/30 09:48:08
 
 由此可見,timestamp和常用的date型別一樣,同樣可以靈活使用oracle的日期函式。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26143577/viewspace-718732/,如需轉載,請註明出處,否則將追究法律責任。

相關文章