SQL日期计算格式

时间:2014-11-29 14:49:15

标签: 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_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;

P.S。我正在使用Oracle数据库:)

2 个答案:

答案 0 :(得分:0)

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

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_date_time作为减数,start_date_time作为减数以避免负值。

答案 1 :(得分:0)

感谢帮助幼儿,但我决定采用另一种方式找到。对于遇到同样问题的其他人,我做了以下事情:

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;

这似乎完全符合我的需要。它在一个血清领域的日子到小时分钟和秒,但为了我的目的,这是可以接受的