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')代码>