2015-10-14 68 views
0

我的下一个念头:获取的时间差异甲骨文

SELECT TO_CHAR('14:00:00','HH24:MI:SS') - MIN(TO_CHAR(DATETIME,'HH24:MI:SS')) AS MINFECHA 
    FROM ARCHIVO2 
    WHERE DIA='LUNES'; 

我想要得到的2场之间的差异应该是这样的

00:46:00 

任何意见将不胜感激。

+0

您已经删除了大量重要日期数据,如日/月/年。如果您只使用小时/分钟/秒,则无法区分36小时和12小时。 –

+1

[计算Oracle SQL中2个日期/时间之间的差异]的可能重复(http://stackoverflow.com/questions/1096853/calculate-difference-between-2-date-times-in-oracle-sql) –

+0

事实上例如,员工通常在14:00:00开始工作,但如果员工在14:02:00工作迟到,我希望能够制定时间差异,在这种情况下,它将是00:02: 00(2分钟后) –

回答

1

你不能在字符串中加/减日期和时间。为了完成你需要的字符串转换为DATE值,进行必要的计算,然后将结果转换回一个字符串,你想做什么:

WITH DATE_DATA AS 
    (SELECT DIA, 
      DATETIME, 
      TO_DATE(TO_CHAR(DATETIME, 'DD-MON-YYYY') || ' ' || '14:00:00', 'DD-MON-YYYY HH24:MI:SS') AS BASE_TIME 
    FROM ARCHIVO2) 
SELECT DIA, 
     DATETIME, 
     BASE_TIME, 
     (DATETIME - BASE_TIME) * 1440 AS MINUTES_LATE 
    FROM DATE_DATA; 

SQLFiddle here

最佳的运气。