Oracle

如何在幾分鐘內獲得兩個時間戳之間的差異?

  • June 11, 2019

展示

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 的版本相比,此版本更快。這個版本的唯一缺點是它不包括幾分之一秒。

引用自:https://dba.stackexchange.com/questions/162973