如何减去日期并计算每天的时间?PLSQL还是Java
下午好 我的问题是:我需要计算两个日期之间的时间,但条件是,例如,如果第一个日期是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 相互减去日期,然后使用如何减去日期并计算每天的时间?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函数将结
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数据库的哪个版本?