Oracle中Varchar 型資料 計算時間差

2021-08-29 21:17:44 字數 1100 閱讀 8217

在開發程式時,我們經常會遇到要計算從starttime到endtime的時間差,但這個記錄時間差的字段是varchar型的,這就需要先進行資料型別的轉換才能達到目的:

先來看看oracle系統時間的時間差計算方法:

select

sysdate,sysdate-500,

to_char(sysdate,'yyyy')-

to_char(sysdate-500,'yyyy')  as year2

from dual;

執行結果: year2 : 2

在oracle裡日期直接相減就是相差天數,預設的單位是天,

要想計算別的計量單位,可以把date進行日期格式化,這樣就能

得到你想的計量結果了:

select   (

trunc ( to_date('2009-02-24 19:30','yyyy-mm-dd hh24:mi'),'mi') -

trunc ( to_date('2009-02-23 19:30','yyyy-mm-dd hh24:mi'),'mi')

) * 24*60   

from  dual;

執行結果: 1440 

從計算date型日期之間的時間差得到啟發, 只需要先進行資料型別的轉換,再進行日期格式化就ok了:

- 消逝的時間(以天為單位)

trunc (to_date(end-date-start_date))

- 消逝的時間(以小時為單位)

trunc (to_date(end-date-start_date)*24)

- 消逝的時間(以分鐘為單)

trunc (to_date(end-date-start_date)*24*60)

計算varchar型的starttime到endtime時的時間差:

select (

trunc (to_date('19:30','hh24:mi'),'mi') -

trunc (to_date('18:30','hh24:mi'),'mi') 

) * 24 * 60           

from   dual;

執行結果: 60

Oracle中的varchar型別

varchar的優點 節省空間,寫入速度快。varchar寫入資料庫時,資料庫不會在字串尾部自動補充空格。這樣可以節省資料占用的磁碟空間,也可以節省一定的自動補充空格運算。varchar的缺點 varchar中,字串尾部空格是有意義的,資料庫在檢索資料時,不會自動去除尾部空格後匹配。所以寫入資料時如...

Oracle的varchar2型別實現主鍵自增

create table project manage productionid varchar2 20 not null,name varchar2 20 not null,remarks varchar2 50 create sequence auto add start with 10000 ...

Oracle中char和varchar2的區別

1.char的長度是固定的,而varchar2的長度是可以變化的,比如,儲存字串 abc 對於char 20 表示你儲存的字元將佔20個位元組 包括17個空字元 在資料庫中它是以空格佔位的,而同樣的varchar2 20 則只占用3個位元組的長度,20只是最大值,當你儲存的字元小於20時,按實際長度...