日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle中计算两个时间的时间差:

發(fā)布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle中计算两个时间的时间差: 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

計算時間差是oracledata數(shù)據(jù)類型的一個常見問題。oracle支持日期計算,你可以創(chuàng)建諸如“日期1-日期2”這樣的表達式來計算這兩個日期之間的時間差。一旦你發(fā)現(xiàn)了時間差異,你可以使用簡單的技巧來以天、小時、分鐘或者秒為單位來計算時間差。為了得到數(shù)據(jù)差,你必須選擇合適的時間度量單位,這樣就可以進行數(shù)據(jù)格式隱藏。


使用完善復雜的轉換函數(shù)來轉換日期是一個誘惑,但是你會發(fā)現(xiàn)這不是最好的解決方法。
round(to_number(end-date-start_date))-消逝的時間(以天為單位)

round(to_number(end-date-start_date)*24)-消逝的時間(以小時為單位)

round(to_number(end-date-start_date)*1440)-消逝的時間(以分鐘為單位)K7zR{{-:W[本資料來源于貴州學習網(wǎng)http://www.gzu521.com]K7zR{{-:W
顯示時間差的默認模式是什么?為了找到這個問題的答案,讓我們進行一個簡單的sql*plus查詢。
sql>selectsysdate-(sysdate-3)fromdual;

sysdate-(sysdate-3)
-------------------
3

這里,我們看到了oracle使用天來作為消逝時間的單位,所以我們可以很容易的使用轉換函數(shù)來把它轉換成小時或者分鐘。然而,當分鐘數(shù)不是一個整數(shù)時,我們就會遇到放置小數(shù)點的問題。
select
(sysdate-(sysdate-3.111))*1440
from
dual;


(sysdate-(sysdate-3.111))*1440
------------------------------
4479.83333

當然,我們可以用round函數(shù)(即取整函數(shù))來解決這個問題,但是要記住我們必須首先把date數(shù)據(jù)類型轉換成number數(shù)據(jù)類型。
select
round(to_number(sysdate-(sysdate-3.111))*1440)
from
dual;

round(to_number(sysdate-(sysdate-3.111))*1440)
----------------------------------------------
4480

我們可以用這些函數(shù)把一個消逝時間近似轉換成分鐘并把這個值寫入oracle表格中。在這個例子里,我們有一個離線(logoff)系統(tǒng)級觸發(fā)機制來計算已經(jīng)開始的會話時間并把它放入一個oraclestatspackuser_log擴展表格之中。
update
perfstat.stats$user_log
set
elapsed_minutes=
round(to_number(logoff_time-logon_time)*1440)
where
user=user_id
and
elapsed_minutesisnull;

總結

以上是生活随笔為你收集整理的Oracle中计算两个时间的时间差:的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。