Calculate difference between 2 date / times in Oracle SQL Calculate difference between 2 date / times in Oracle SQL oracle oracle

Calculate difference between 2 date / times in Oracle SQL


You can substract dates in Oracle. This will give you the difference in days. Multiply by 24 to get hours, and so on.

SQL> select oldest - creation from my_table;

If your date is stored as character data, you have to convert it to a date type first.

SQL> select 24 * (to_date('2009-07-07 22:00', 'YYYY-MM-DD hh24:mi')              - to_date('2009-07-07 19:30', 'YYYY-MM-DD hh24:mi')) diff_hours        from dual;DIFF_HOURS----------       2.5

Note:

This answer applies to dates represented by the Oracle data type DATE.Oracle also has a data type TIMESTAMP, which can also represent a date (with time). If you subtract TIMESTAMP values, you get an INTERVAL; to extract numeric values, use the EXTRACT function.


To get result in seconds:

select (END_DT - START_DT)*60*60*24 from MY_TABLE;

Check [https://community.oracle.com/thread/2145099?tstart=0][1]


declarestrTime1 varchar2(50) := '02/08/2013 01:09:42 PM';strTime2 varchar2(50) := '02/08/2013 11:09:00 PM';v_date1 date := to_date(strTime1,'DD/MM/YYYY HH:MI:SS PM');v_date2 date := to_date(strTime2,'DD/MM/YYYY HH:MI:SS PM');difrence_In_Hours number;difrence_In_minutes number;difrence_In_seconds number;begin    difrence_In_Hours   := (v_date2 - v_date1) * 24;    difrence_In_minutes := difrence_In_Hours * 60;    difrence_In_seconds := difrence_In_minutes * 60;    dbms_output.put_line(strTime1);            dbms_output.put_line(strTime2);    dbms_output.put_line('*******');    dbms_output.put_line('difrence_In_Hours  : ' || difrence_In_Hours);    dbms_output.put_line('difrence_In_minutes: ' || difrence_In_minutes);    dbms_output.put_line('difrence_In_seconds: ' || difrence_In_seconds);        end ;

Hope this helps.