Oracle中,日期相加減換算日時分秒


今天在修復bug時,計算時間差有的正確,有的不正確,最後找到原來是trunc的原因


在Oracle中,日期格式時刻意相加減的

兩個日期相減,默認就是天數days;

days*24即爲相差小時數;

days*24*60即爲相差分鐘數;

days*24*60*60即爲秒數;

不用再刻意轉換、取整等,Oracle會自動保留小數位或者自動截取轉換

特別是取秒數時,使用trunc截取可能會適得其反,trunc截取時默認是不會四捨五入的,例如:

SQL> select (to_date('2015-11-18 18:55:58','yyyy-mm-dd hh24-mi-ss')-to_date('2015-11-18 18:55:11','yyyy-mm-dd hh24-mi-ss'))*24*60*60 secs from dual;
 
      SECS
----------
        47


SQL> select trunc((to_date('2015-11-18 18:55:58','yyyy-mm-dd hh24-mi-ss')-to_date('2015-11-18 18:55:11','yyyy-mm-dd hh24-mi-ss'))*24*60*60) secs from dual;
 
      SECS
----------
        46


需要指出的是,如果爲trunc指定保留位數,當然可以,

SQL> select trunc((to_date('2015-11-18 18:55:58','yyyy-mm-dd hh24-mi-ss')-to_date('2015-11-18 18:55:11','yyyy-mm-dd hh24-mi-ss'))*24*60*60,2) secs from dual;
 
      SECS
----------
     46.99

只要業務上對秒數沒有整數的要求都ok哈




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章