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

首頁 > 數據庫 > Oracle > 正文

在Oracle9i中計算時間差

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

  計算時間差是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;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 资中县| 连南| 石泉县| 北川| 海淀区| 杭锦后旗| 连平县| 汾阳市| 阿勒泰市| 阳山县| 荥经县| 翼城县| 临安市| 顺昌县| 金坛市| 长春市| 嘉义市| 若尔盖县| 融水| 安吉县| 呈贡县| 常德市| 丰县| 眉山市| 桃园县| 齐齐哈尔市| 金沙县| 博乐市| 高雄市| 布拖县| 库尔勒市| 白城市| 墨竹工卡县| 东兴市| 蚌埠市| 大港区| 祁阳县| 宜都市| 崇州市| 钦州市| 新建县|