国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

在Oracle9i中計算時間差

2024-08-29 13:31:43
字體:
來源:轉載
供稿:網友

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

使用完善復雜的轉換函數來轉換日期是一個誘惑,但是你會發現這不是最好的解決方法。

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

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

round(to_number(end-date-start_date)*1440)- 消逝的時間(以分鐘為單位)

顯示時間差的默認模式是什么?為了找到這個問題的答案,讓我們進行一個簡單的sql *plus查詢。

sql> select sysdate-(sysdate-3) from dual;

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

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

select
   (sysdate-(sysdate-3.111))*1440
from
   dual;


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


當然,我們可以用round函數(即取整函數)來解決這個問題,但是要記住我們必須首先把date數據類型轉換成number數據類型。

select
   round(to_number(sysdate-(sysdate-3.111))*1440)
from
   dual;

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

我們可以用這些函數把一個消逝時間近似轉換成分鐘并把這個值寫入oracle表格中。在這個例子里,我們有一個離線(logoff)系統級觸發機制來計算已經開始的會話時間并把它放入一個oracle statspack user_log擴展表格之中。

update
   perfstat.stats$user_log
set
   elapsed_minutes =
   round(to_number(logoff_time-logon_time)*1440)
where
   user = user_id
and
   elapsed_minutes is null;
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 时尚| 南昌市| 中西区| 延庆县| 新巴尔虎左旗| 应城市| 永胜县| 博湖县| 安丘市| 广宁县| 栖霞市| 临颍县| 确山县| 定边县| 西乌| 霍林郭勒市| 平武县| 手游| 牟定县| 蒙阴县| 西乌珠穆沁旗| 牟定县| 隆化县| 罗源县| 濮阳县| 建始县| 彭阳县| 肇州县| 莱州市| 夏邑县| 昭觉县| 平利县| 水城县| 福泉市| 中方县| 博白县| 公主岭市| 徐闻县| 长泰县| 通江县| 和平区|