TIMESTAMP資料型別 007

2021-04-12 23:37:04 字數 2654 閱讀 6784

以下**的執行環境:oracle9.2,pl/sql developer

一、timestamp

timestamp資料型別,是date的擴充套件,可以儲存年、月、日、小時、分鐘、秒,同時還可以儲存秒的小數部分。

語法為:timestamp [(fractional_seconds_precision)]

fractional_seconds_precision為可選項,指定秒的小數部分的精度,取值範圍為0-9,預設值為6。

示例**:

declare

v_inteval timestamp(7);

begin

v_inteval := timestamp'2007-05-05 23:34:45.1234567';                 

dbms_output.put_line(v_inteval);

end;

結果為:05-5月 -07 11.34.45.1234567 下午。

說明:如果精度為5,則結果為05-5月 -07 11.34.45.12346 下午;如果精度為8,則結果為05-5月 -07 11.34.45.12345670 下午。

二、timestamp with time zone

timestamp with time zone資料型別是可以指定時區的timestamp。時區的偏移是指本地時間和格林尼治(utc)時間之間的差異(小時和分鐘)。

語法為:timestamp [(fractional_seconds_precision)] with time zone

fractional_seconds_precision為可選項,指定秒的小數部分的精度,取值範圍為0-9,預設值為6。

如果2個timestamp with time zone,相對於utc代表相同的時間,則認為這2個timestamp with time zone是相等的,而不管這2個timestamp with time zone所代表的具體時間,例如:timestamp '1999-04-15 8:00:00 -8:00'和timestamp '1999-04-15 11:00:00 -5:00'是相等的,雖然他們分別表示當地的8點和11點,其中-8:00以及-5:00,表示相對utc的偏移量。

在上例中,也可以將偏移量替換成時區地區(trz,time zone region),例如,上例中的timestamp '1999-04-15 8:00:00 -8:00',與timestamp '1999-04-15 8:00:00 us/pacific'是相等的。

為了削除因為夏令時引起的時間歧義,同時使用trz,以及和trz相對應的trd來確保返回正確的時間,例如:timestamp '1999-10-29 01:30:00 us/pacific pdt'。如果沒有使用tzd元素,並且oracle的error_on_overlap_time session引數設定為true,則oracle會返回錯誤。如果error_on_overlap_time session引數設定為false,則oracle認為該timestamp with time zone為標準時間。

**一:

declare

v_inteval timestamp(7) with time zone;

begin

v_inteval := timestamp'2007-05-05 23:34:45.1234567';                 

dbms_output.put_line(v_inteval);

end;

結果為:05-5月 -07 11.34.45.123456700 下午 +08:00。

說明:該結果與(一)中的**結果相比,多了乙個時區偏移量+08:00,說明該時間為北京時間。

**二:

declare

v_inteval_1 timestamp(3) with time zone;

v_inteval_2 timestamp(3) with time zone;

begin

v_inteval_1 := timestamp'1999-04-15 8:00:00 -8:00';

v_inteval_2 := timestamp'1999-04-15 11:00:00 -5:00';

if(v_inteval_1=v_inteval_2)  then            

dbms_output.put_line('v_inteval_1=v_inteval_2');

else

dbms_output.put_line('v_inteval_1!=v_inteval_2');

end if;

end;

結果為:v_inteval_1=v_inteval_2。

三、timestamp with  local time zone

timestamp with local time zone資料型別也是可以指定時區的timestamp,和timestamp with time zone不同的是,他儲存的是資料庫的時區,時區偏移量並不儲存。當使用者提交資料,oracle返回的是使用者的本地所在的時區。時區的偏移是指本地時間和格林尼治(utc)時間之間的差異(小時和分鐘)。timestamp with local time zone主要用於cs二層系統應用。

語法:timestamp [(fractional_seconds_precision)] with local time zone

timestamp資料型別

程式設計的時候,對於時間的處理,很多時候,我們都用到了時間戳型別,即timestamp型別。插入資料的時候,不注意的話,執行sql總是報 無效的月份 這是因為我們的資料格式不對,但是如果我們複製乙個timestamp的資料字段過來,我們發現也插不進去。比如對於下面這張表 sql語句如下 insert...

Oracle 資料型別timestamp和date

select systimestamp from dual select current timestamp from dual select cast sysdate as timestamp date from dual select to timestamp to date sysdate,y...

Oracle中TIMESTAMP資料型別

timestamp資料型別 是date的擴充套件,可以儲存年 月 日 小時 分鐘 秒,同時還可以儲存秒的小數部分。通過to timestamp函式將date型轉成這種型別。sql語句如下 select to timestamp 2018 1 04 yyyy mm dd from dual 執行結果如...