Oracle
如何在幾分鐘內獲得兩個時間戳之間的差異?
展示
create table my_table (ts1 timestamp,ts2 timestamp); insert into my_table (ts1,ts2) values (timestamp '2017-01-29 07:35:14.52',timestamp '2017-01-29 15:01:59.14');
我熟悉以下方法:
select ( extract (day from (ts2-ts1))*24*60*60 + extract (hour from (ts2-ts1))*60*60 + extract (minute from (ts2-ts1))*60 + extract (second from (ts2-ts1)) )/60 as ts_diff_minutes from my_table ;
+------------------------------------------+ | TS_DIFF_MINUTES | +------------------------------------------+ | 446.743666666666666666666666666666666667 | +------------------------------------------+
我想知道是否有更短的版本來達到相同的結果?
在網際網路上搜尋了幾個小時後,我找到了我所要求的程式碼的較短版本。經過幾次嘗試推導我在這裡找到的程式碼。
(CAST((SYSTIMESTAMP + interval '35' minute) as date) - CAST(SYSTIMESTAMP as date)) * 1440
結果:
+--------+ | Result | +--------+ | 35 | +--------+
與使用 EXTRACT 的版本相比,此版本更快。這個版本的唯一缺點是它不包括幾分之一秒。