从PL \ SQL中的数据减去分钟和秒

时间:2015-12-23 18:25:12

标签: oracle plsql

我的表格包含有关来电的信息,每个来电都有start dateend date,格式如下:

YYYY-MM-DD HH:MM:SS

如何在几分钟或几秒内区分 开始日期 结束日期

以及如何从日期删除秒或分钟?,例如(2015-12-23 20:20:50) - 10秒= 2015-12-23 20:20:40

1 个答案:

答案 0 :(得分:3)

这是你之后的事情吗?

  drop table junk;

  create table junk (
     id          number,
     start_date  date,
     end_date    date
     )
  /

  insert into junk values ( 1, to_date('23-dec-2015 20:20:40', 'dd-mon-yyyy hh24:mi:ss'), to_date('23-dec-2015 20:20:50', 'dd-mon-yyyy hh24:mi:ss') );
  insert into junk values ( 1, to_date('23-dec-2015 20:20:40', 'dd-mon-yyyy hh24:mi:ss'), to_date('23-dec-2015 20:21:50', 'dd-mon-yyyy hh24:mi:ss') );
  insert into junk values ( 1, to_date('23-dec-2015 20:20:40', 'dd-mon-yyyy hh24:mi:ss'), to_date('23-dec-2015 22:21:50', 'dd-mon-yyyy hh24:mi:ss') );

  commit;

  select id, start_date, end_date,
         end_date - start_date   diff_days,
         (end_date - start_date)*24   diff_hrs,
         (end_date - start_date)*24*60   diff_min,
         (end_date - start_date)*24*60*60   diff_sec,
         trunc(end_date,'MI')   no_seconds
    from junk
  /

          ID START_DATE           END_DATE              DIFF_DAYS   DIFF_HRS   DIFF_MIN   DIFF_SEC NO_SECONDS
  ---------- -------------------- -------------------- ---------- ---------- ---------- ---------- --------------------
           1 23-dec-2015 20:20:40 23-dec-2015 20:20:50 .000115741 .002777778 .166666667         10 23-dec-2015 20:20:00
           1 23-dec-2015 20:20:40 23-dec-2015 20:21:50 .000810185 .019444444 1.16666667         70 23-dec-2015 20:21:00
           1 23-dec-2015 20:20:40 23-dec-2015 22:21:50 .084143519 2.01944444 121.166667       7270 23-dec-2015 22:21:00

  SQL>

[编辑] 刚注意到我想你可能也要求从日期值中删除一组秒数。

因此,如果我们想删除15天,我们可以:

end_date - 15

删除15小时:

end_date - (15/24)

...等,直到15秒:

end_date - (15/24/60/60)

;)