我发布以来已经有一段时间了。我有关于日期计算的问题。
我试图找到两个日期之间的差异,如开始时间和结束时间。
我能够找到天数的差异,例如,如果我有日期:
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数据库:)
答案 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;
这似乎完全符合我的需要。它在一个血清领域的日子到小时分钟和秒,但为了我的目的,这是可以接受的