SQL日期计算格式

SQL日期计算格式,sql,oracle,date,Sql,Oracle,Date,我已经有一段时间没有发帖了。我有一个关于日期计算的问题 我试图找出两个日期之间的差异,比如开始时间和结束时间 我能够找到天数的差异,例如,如果我有日期: start = 12/11/2014 12:05:05 finish = 13/11/2014 09:44:19 然后查询给我-0.90224537 但是,我需要以小时、分、秒的形式给出工资方面的答案。这样做的最佳方式是什么 到目前为止,我的问题是: select time_sheet.time_sheet_id, time

我已经有一段时间没有发帖了。我有一个关于日期计算的问题

我试图找出两个日期之间的差异,比如开始时间和结束时间

我能够找到天数的差异,例如,如果我有日期:

start = 12/11/2014 12:05:05
finish = 13/11/2014 09:44:19
然后查询给我-0.90224537

但是,我需要以小时、分、秒的形式给出工资方面的答案。这样做的最佳方式是什么

到目前为止,我的问题是:

select
    time_sheet.time_sheet_id, 
    time_sheet.start_date_time - time_sheet.finish_date_time,     
    employee_case.case, employee_case.employee 
from 
    time_sheet 
inner join 
    employee_case on time_sheet.employee_case = employee_case.employee_case_id 
where 
    employee_case.case = 1;

另外,我正在使用Oracle数据库:)

date-date
产生
天的差异。因此,您可以使用标准时间转换将其转换为小时、分钟和秒,如下所示:

select
    time_sheet.time_sheet_id, 
    (time_sheet.finish_date_time - time_sheet.start_date_time)||' days'||(time_sheet.finish_date_time - time_sheet.start_date_time)*24||' hours '||(time_sheet.finish_date_time - time_sheet.start_date_time)*24*60||' minutes '||(time_sheet.finish_date_time - time_sheet.start_date_time)*24*60*60||' seconds ' ,     
    employee_case.case, employee_case.employee 
from 
    time_sheet 
inner join 
    employee_case on time_sheet.employee_case = employee_case.employee_case_id 
where 
    employee_case.case = 1;

此外,您需要将
finish\u date\u time
作为分钟结束,将
start\u date\u time
作为分栏结束,以避免出现负值。

谢谢您的帮助,但我已决定改弦易辙。对于其他有同样问题的人,我已经做了以下工作:

select
    time_sheet.time_sheet_id, 
    to_number( to_char(to_date('1','J') +
    (time_sheet.finish_date_time - time_sheet.start_date_time), 'J') - 1)  days,
    to_char(to_date('00:00:00','HH24:MI:SS') +
    (time_sheet.finish_date_time - time_sheet.start_date_time), 'HH24:MI:SS') time,
    employee_case.case, employee_case.employee 
from 
    time_sheet 
inner join 
    employee_case on time_sheet.employee_case = employee_case.employee_case_id 
where 
    employee_case.case = 1;

这似乎正是我需要的。它将SEROPATE字段中的天数改为小时分钟和秒,但出于我的目的,这是可以接受的

感谢您对其进行编辑,以正确阅读@marc\n这不是我想要的方式。我的问题可能不清楚。我想让它,因为有问题的日期提供,答案将是21小时39米14秒,而你给的是给我不同单位的持续时间,而不是分为小时分钟和秒。很抱歉给你添麻烦,达拉戈,我明白。我确信在某个地方存在一些函数(可能不是Oracle默认值),它显示了一个很好的可读格式,从“0,9”转换为“21h 39m 14s”(或任何实际值)。这并不容易,因为你可能不想看到这个“0days 0h 39m 14s”?这比“39m 14”更容易(假设不到1小时)。@tvCa你绝对正确。有一个:
从dual中选择numtodsinterval(2.7,'Day')