1
我在Oracle數據庫上做日期替換時遇到了一些麻煩。Oracle中日期減法的問題
我有一個查詢:
select
status,
id,
to_char(creationdatetime,'yyyy/mm/dd hh24:mm:ss') as Creation_Time,
to_char(lastmodificationdatetime,'yyyy/mm/dd hh24:mm:ss') as Last_Mod_Time,
substr(lastmodificationdatetime - creationdatetime,1,30)*24 as Time_Between,
--trunc((((86400*(lastmodificationdatetime - creationdatetime))/60)/60)/24) "Days",
--trunc(((86400*(lastmodificationdatetime - creationdatetime))/60)/60)-24*(trunc((((86400*(lastmodificationdatetime - creationdatetime))/60)/60)/24)) "Hrs",
--trunc((86400*(lastmodificationdatetime - creationdatetime))/60)-60*(trunc(((86400*(lastmodificationdatetime - creationdatetime))/60)/60)) "Min",
--trunc(86400*(lastmodificationdatetime - creationdatetime))-60*(trunc((86400*(lastmodificationdatetime - creationdatetime))/60)) "Sec"
from
table
where
Status='Completed' or Status='Cancelled';
(TRUNC是檢查統計日期等方式)
然後我得到的結果:
Status ID CreationDate Lastmodificationdate Time_Between Days Hours Minutes Seconds
Completed id1 2013/03/25 12:03:14 2013/03/25 13:03:17 1,78416666666666666666666666648 0 1 47 3
Completed id2 2013/03/26 09:03:22 2013/03/26 09:03:28 0,45166666666666666666666666656 0 0 27 5
Cancelled is3 2012/12/19 17:12:50 2012/12/19 19:12:10 1,52222222222222222222222222208 0 1 31 19
Cancelled id4 2012/12/19 18:12:13 2012/12/19 19:12:23 0,65277777777777777777777777768 0 0 39 10
我們可以看到日期中減去錯誤地,當我複製日期和減少他們使用雙:
select (to_date('2013/03/25 13:03:17', 'yyyy/MM/dd HH24:MI:SS') -
to_date('2013/03/25 12:03:14', 'yyyy/MM/dd HH24:MI:SS'))
from dual;
我得到正確的結果...我不知道發生了什麼事... 希望有任何幫助。
什麼呢'SUBSTR(lastmodificationdatetime - creationdatetime,1,30)* 24'?爲什麼你不只是簡單化他們,並與24乘以獲得小時? – 2013-04-10 12:29:01
您的「select .. from dual」與您的Time_Between計算不同。 – Rene 2013-04-10 12:30:56