在oracle中儲存date和時間資訊的話,實際上你有兩種字段資料型別的選擇(9i)。
date資料型別
可以儲存月,年,日,世紀,時,分和秒。度量粒度是秒
以使用to_char函式把date資料進行傳統地包裝,達到表示成多種格式的目的
select to_char(sysdate,'mm/dd/yyyy hh24:mi:ss') "date" from dual
大多數人陷入的麻煩就是計算兩個時間間的間隔年數、月數、天數、小時數和秒數。你需要明白的是,當你進行兩個日期的相減運算的時候,得到的是「帶小數字的天數」。
可以通過乙個函式將天數轉換成「天時分秒」格式:
create or replace function f_days2str(p_days in number default 0)
return varchar2 is
--ver:1.0
--created by xsb on 2005-05-26
--for:
將天數轉換成天時分秒格式
days number := nvl(p_days, 0);
vd number; --天
vh number;
--小時
vm number; --分
vs number; --秒
result varchar2(
100);
--返回值
begin
vd := trunc(days);
vh := trunc((days - vd) *
24);
vm := trunc((days - vd - vh /
24) *
24*
60);
vs := trunc((days - vd - vh /
24- vm /
24/
60) *
24*
60*
60);
select decode(vd, 0,
'', vd || '天
') || decode(vh, 0,
'', vh || '小時
') ||decode(vm, 0,
'', vm || '分
') || decode(vs, 0,
'', vs || '秒
') into result from dual;
return(result);
end;
timestamp 資料型別
它包括了所有date資料型別的年月日時分秒的資訊,而且包括了小數秒的資訊。
select sysdate,systimestamp from dual
注意,to_char函式支援date和timestamp,但是trunc卻不支援timestamp資料型別。
select sysdate,systimestamp,to_char(systimestamp,'yyyymmdd hh24:mi:ssxff3')fromdual
當你直接相減的話,看看會發生什麼。結果將更容易理解,
selectsystimestamp-systimestampfromdual
這就意味著不用再通過麻煩的計算求出多少天多少秒,用substr函式摘取出其中的數字即可!
結論:當使用date和timestamp型別的時候,選擇是很清楚的。你可以隨意處置date和timestamp型別。當你的時間粒度必須精確至秒以下時,可以考慮使用timestamp。
再來看如何實現:將天數轉換成「天時分秒」格式:
使用date資料型別:
createtablet2 (d1date,d2date) ;
insert intot2values(sysdate,sysdate+
1.1234
);selectd1, d2, d2 - d1, f_days2str(d2 - d1),
cast(d2as timestamp) -cast(d1as timestamp)
fromt2
selectto_number(substr(d21, 1
, instr(d21,
' '))) d,
substr(d21, instr(d21,
' ') + 1,
2) h,
substr(d21, instr(d21,
' ') + 4,
2) m,
substr(d21, instr(d21,
' ') + 7,
2) s
from(select cast(d2as timestamp) -cast(d1as timestamp) d21
fromt2)
**:
Oracle中date與timestamp的異同
在oracle中儲存date和時間資訊的話,實際上你有兩種字段資料型別的選擇 9i date資料型別 可以儲存月,年,日,世紀,時,分和秒。度量粒度是秒 以使用to char函式把date資料進行傳統地包裝,達到表示成多種格式的目的 select to char sysdate,mm dd yyyy...
Python中時間的處理之 date和time篇
usr bin python coding utf 8 from datetime import datetime,date,time date型別顧名思義就是只表示日期,而time只表示time today date.today attrs year 年 month 月 day 日 for k,v...
ORACLE中date型別的使用
本文 csdn,作者 itwit 2015 4 2 對於很多人來說,oracle中的時間處理,向來是乙個很模糊的概念,我也是,記下來做參考。1.建立一張含日期型別的表 create table test user user id number 15 user name varchar2 30 sta...