Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: date/time problem
On Fri, 23 Oct 1998 11:42:02 +0200, andy sykes
<andrew.sykes_at_holland.sun.com> wrote:
>Hi All,
>I want to compare two dates and display the difference in Hours,Mins &
>seconds. Has anyone had to do this or can anyone suggest a solution ?
>I have tried the months_between function but it doesn't appear to work
>when the dates are the same e.g
>
>SELECT MONTHS_BETWEEN(TO_DATE('10-23-1998 09:30:00', 'MM-DD-YYYY
>HH:MI:SS'),TO_DATE('10-23-1998 11:35:00', 'MM-DD-YYYY HH:MI:SS'))
>"Months" FROM DUAL
>
>returns ;
>
> Months
>----------
> 0
>Assuming that this was to give me a decimal value corresponding to the
>time,(the help says that is should), how would I convert that into
>meaningfull Hrs,Min & Secs values ?
>I would really appreciate some suggestions.
You can subtract dates, you don't need to use MONTHS_BETWEEN. Here is a simple function that displays days and time between two dates:
SQL> CREATE OR REPLACE FUNCTION date_difference (date1 DATE, date2
DATE)
2 RETURN VARCHAR2 IS
3 diff NUMBER := ABS(date2 - date1);
4 signs VARCHAR2(1);
5 days NUMBER; 6 hours NUMBER; 7 mins NUMBER; 8 secs NUMBER;
16 diff := diff - hours/24; 17 mins := TRUNC(diff*1440); -- 24*60 18 diff := diff - mins/1440; 19 secs := TRUNC(diff*86400); -- 24*60*60 20 RETURN (signs || days || ' days, ' || hours || ' hours, '|| 21 mins ||' minutes, ' || secs || ' seconds');22 END;
Function created.
SQL> show errors
No errors.
SQL>
SQL> SELECT date_difference(TO_DATE('10-23-1998 09:30:00', 'MM-DD-YYYY
HH:MI:SS')
2 ,TO_DATE('10-23-1998 11:35:00', 'MM-DD-YYYY HH:MI:SS'))
3 "Difference" FROM DUAL;
Difference
>Regards
>Andy
HTH,
Jurij Modic <jmodic_at_src.si>
Certified Oracle7 DBA (OCP)
![]() |
![]() |