oracle計算兩個日期的時間差時分秒
Oracle
函式可以實現諸多的功能,下面就介紹使用Oracle
函式計算時間差的實現方法。
兩個Date
型別欄位:START_DATE
,END_DATE
,計算這兩個日期的時間差(分別以天,小時,分鐘,秒,毫秒):
天: ROUND(TO_NUMBER(END_DATE - START_DATE))
小時: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)
分鐘: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)
秒: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)
毫秒: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)
例子:
select ROUND(TO_NUMBER(
to_date(to_char(sysdate,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd hh24:mi:ss') - to_date('2012-05-11 10:37:40','yyyy-MM-dd hh24:mi:ss'))*24*60*60)
from dual
select ROUND(TO_NUMBER(to_date(to_char(sysdate,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd hh24:mi:ss')
- to_date('2013-01-16 00:00:00','yyyy-MM-dd hh24:mi:ss'))*24*60*60) from dual
to_date
如何取得毫秒?
由於oracle
中date
型別只支援到秒,不支援到毫秒,所以to_date()
不能取到毫秒。 如果要取到毫秒,oracle 9i
以上版本,可以使用timestamp
型別,是date
的擴充套件型別,能支援到毫秒,毫秒的顯示精度是6位,不過有效位是3位,即最大值達到999,滿1000ms就進為1s。而與to_date()
對應的轉換函式可以使用to_timestamp()
。 select to_timestamp('2011-12-15 10:40:10.345', 'yyyy-MM-dd HH24:MI:ss.ff') as mydate from dual;
如果想將timestamp
又轉換成date
型別,可以使用cast()
函式,但得到的date
型別沒有了毫秒值。如下: select cast(to_timestamp('2011-12-15 10:40:10.345', 'yyyy-MM-dd HH24:MI:ss.ff') as date) as mydate from dual;
Oracle時間型別date,timestamp時間差計算
Oracle
的時間型別有兩種date
和timestamp
. date
精確到秒,timestamp
精確到毫秒.
1.計算date
型別的時間差
可以先把年,月,日,小時,分,秒用to_char
函式拆分出來,再用to_number
函式轉換成數值型別.有了這些單獨分開的時間就好辦了.就再一個個的去減,記得考慮單位換算就行.比如都轉換成小時或分之類的
示例:
declare
v_date date;
v_year int;
v_month int;
v_day int;
v_hour int;
v_minute int;
v_second int;
begin
v_date := sysdate;
v_year :=to_number( to_char(v_date,'yyyy'));
--月,日,小時,分,秒的拆分方法和上面年的一樣,只要把yyyy分別替換成mm,dd,hh,mi,ss就行了
end;
--timestamp型別的時間也可以用同樣的方法,但是這隻能精確到秒,後面的毫秒就忽略掉了
2.計算timestamp
型別的時間差
用to_char
函式不能拆分出毫秒來.可以用另外一個函式extract
示例
declare
v_t timestamp;
v_year int;
v_s float;
begin
v_t := systimestamp;
v_year := extract(year from v_t);
--月,日,小時,分的拆分方法和上面的年一樣只要把year改成month,day,hour,minute就行.
v_s :=extract(second from v_t);--注意,這裡雖然也只能拆分到秒,但這裡的秒是帶小數點的,小數點後面的就是毫秒了.
end;
Oracle中兩個TIMESTAMP時間型別的差
首先需要先轉換成char
型別
to_char(t.restime, 'yyyy-mm-dd hh24:mi:ss')
然後在轉換為date
TO_DATE((to_char(t.restime, 'yyyy-mm-dd hh24:mi:ss')),'yyyy-mm-dd hh24:mi:ss')
再將兩個date
型別相減
to_number(
(
TO_DATE((to_char(t.restime, 'yyyy-mm-dd hh24:mi:ss')),'yyyy-mm-dd hh24:mi:ss') -
TO_DATE(to_char(t.servertime, 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')
)
)* 86400
as miao
相關文章
- js 計算兩個時間的時間差JS
- 計算兩個時間差
- javascript計算兩個日期之間的時間差程式碼例項JavaScript
- JavaScript計算兩個時間點之間的時間差JavaScript
- 計算兩段時間的時間差 (轉)
- javascript如何計算兩個日期之間的時間間隔JavaScript
- javascript 計算兩個日期間差的天數JavaScript
- excel日期加減計算方法 excel計算日期時間差Excel
- javascript計算兩個時間日期相差的天數JavaScript
- 兩個時間戳的時間差時間戳
- C#中計算兩個時間的差,得到月份C#
- 時間差計算
- Oracle計算兩個日期之間的天數Oracle
- JS計算時間差JS
- SQL 10 函式 3 日期時間函式 - 5 計算日期差額SQL函式
- java計算時間差及比較時間Java
- bash shell計算時間差
- 註冊時間差計算
- 去掉時間字串的時分秒字串
- 計算兩個時間日期相差的天數、分鐘數或者秒數
- 如何計算兩個時間間隔的天數
- Linux Shell 時間運算以及時間差計算方法Linux
- Dynamics CRM使用計算欄位自動計算兩個時間欄位的天數差
- 時間格式化大小寫含義(Java 計算時間差以及比較日期大小 )Java
- java計算時間差及比較時間大小Java
- shell 計算時間差的問題
- js計算兩個時間點時間間隔的程式碼例項JS
- javascript比較兩個時間日期的大小JavaScript
- JAVA中計算兩個日期時間的差值竟然也有這麼多門道Java
- php日期時間計算,轉載PHP
- JavaScript計算時間差詳解JavaScript
- JAVA算時間差Java
- JavaScript 計算兩個時間相差天數JavaScript
- ORACLE計算2個時間段相差時間小時、分、秒Oracle
- carbon 計算當前時間與給定時間差
- postgresql 比較兩個時間差大於 N個小時SQL
- Java中計算兩個日期間的天數Java
- 25:計算兩個日期之間的天數