【问题标题】:Oracle SQL - Subtracting Date typesOracle SQL - 减去日期类型
【发布时间】:2016-08-09 09:39:15
【问题描述】:

我正在尝试投影一个列,从结束时间减去员工的开始时间以获得总工作时间。

这是我所拥有的:

select task_name "NAME", to_char(ses_start, 'DD-MON-RR') "DATE", to_char(ses_start,'HH:MI PM') "START", to_char(ses_end, 'HH:MI PM') "END",to_number(to_char(ses_end,'HH24:MI')) - to_number(to_char(ses_start,'HH24:MI')) "TOTAL"

TOTAL 列不起作用 - 甚至可以做这样的事情吗?它一直有效,直到我添加了该列,输出类似于:

TASK_NAME          DATE        START      END
----------------- ------------ ---------- -----------
create flyers     26-MAR-16    02:00 PM   04:30 PM
update website    28-MAR-16    11:00 AM   01:00 PM

所以现在我想要最后一列(最好以小时为单位):

TOTAL   
-----
2.5
2

或者,至少在几小时和几分钟内(这是我试图做的)......

TOTAL   
-------
02:30
02:00

有什么建议吗?

【问题讨论】:

    标签: sql oracle date select subtraction


    【解决方案1】:

    您可以在 oracle 中减去日期类型,它会为您提供一个十进制数,即持续时间(以天为单位)

    select 
      task_name, 
      to_char(ses_start, 'DD-MON-RR') DATE,
      to_char(ses_start,'HH:MI PM') START, 
      to_char(ses_end, 'HH:MI PM') END,
      round((ses_end - ses_start) * 24, 2) DURATION_IN_HOUR
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 2016-04-29
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多