如何减去日期并计算每天的时间?PLSQL还是Java

如何减去日期并计算每天的时间?PLSQL还是Java,java,oracle,plsql,Java,Oracle,Plsql,下午好 我的问题是:我需要计算两个日期之间的时间,但条件是,例如,如果第一个日期是2014年1月20日4:00:00,第二个日期是2014年1月21日1:30:00,那么结果应该是: 2014年1月20日=20小时 2014年1月21日=2.5小时 同样,如果日期范围更广,例如一周等 我已经设法说出了差异,但没有输入两个日期来知道每天的差异有多大 你知道怎么解决这个问题吗?无论是plsql还是java代码 提前感谢您的关注PL/SQL 相互减去日期,然后使用NUMTODSINTERVAL函数将结

下午好

我的问题是:我需要计算两个日期之间的时间,但条件是,例如,如果第一个日期是2014年1月20日4:00:00,第二个日期是2014年1月21日1:30:00,那么结果应该是:

2014年1月20日=20小时 2014年1月21日=2.5小时

同样,如果日期范围更广,例如一周等

我已经设法说出了差异,但没有输入两个日期来知道每天的差异有多大

你知道怎么解决这个问题吗?无论是plsql还是java代码

提前感谢您的关注

PL/SQL 相互减去日期,然后使用
NUMTODSINTERVAL
函数将结果转换为间隔:

SELECT NUMTODSINTERVAL(TO_DATE('01/21/2014 01:30:00', 'MM/DD/YYYY HH24:MI:SS') - 
                         TO_DATE('01/20/2014 04:00:00', 'MM/DD/YYYY HH24:MI:SS'),
                       'DAY') AS TIMEDIFF
  FROM DUAL
这就产生了

TIMEDIFF
+000000000 21:30:00

分享和享受。

您可以创建自己的功能,然后使用它

    CREATE OR REPLACE FUNCTION time_diff (
DATE_1 IN DATE, DATE_2 IN DATE) RETURN NUMBER IS

NDATE_1   NUMBER;
NDATE_2   NUMBER;
NSECOND_1 NUMBER(5,0);
NSECOND_2 NUMBER(5,0);

BEGIN
  -- Get Julian date number from first date (DATE_1)
  NDATE_1 := TO_NUMBER(TO_CHAR(DATE_1, 'J'));

  -- Get Julian date number from second date (DATE_2)
  NDATE_2 := TO_NUMBER(TO_CHAR(DATE_2, 'J'));

  -- Get seconds since midnight from first date (DATE_1)
  NSECOND_1 := TO_NUMBER(TO_CHAR(DATE_1, 'SSSSS'));

  -- Get seconds since midnight from second date (DATE_2)
  NSECOND_2 := TO_NUMBER(TO_CHAR(DATE_2, 'SSSSS'));

  RETURN (((NDATE_2 - NDATE_1) * 86400)+(NSECOND_2 - NSECOND_1));
END time_diff;
/

    --Difference in Hours: 
SELECT time_diff(To_Date('01/20/2014 04:00:00',
                            'MM/DD/YYYY HH24:MI:SS'),
                    To_Date('01/21/2014 01:30:00',
                            'MM/DD/YYYY HH24:MI:SS')) / 60 / 60
      FROM Dual

来源:

你说的“1:30 01/21/2014:00”是什么意思?时间是前一位还是后一位?这个问题非常不清楚。请阅读并改进您的问题,很难说出您想要实现什么以及如何帮助您。对不起,我的英语,我只希望正确的问题被理解为更改,Oracle数据库的哪个版本?