算時間差是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;
算時間差是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
SYSDATE-(SYSDATE-3)
-------------------
3
這裡,我們看到了Oracle使用天來作為消逝時間的單位,所以我們可以很容易的使用轉換函數來把它轉換成小時或者分鐘。然而,當分鐘數不是一個整數時,我們就會遇到放置小數點的問題。
Select
(sysdate-(sysdate-3.111))*1440
from
dual;
(SYSDATE-(SYSDATE-3.111))*1440
------------------------------
4479.83333