DATEDIFF function in Oracle

前端 未结 4 1901
难免孤独
难免孤独 2020-11-30 10:55

I need to use Oracle but DATEDIFF function doesn\'t work in Oracle DB.

How to write the following code in Oracle? I saw some examples using INTERVAL or TRUNC.

相关标签:
4条回答
  • 2020-11-30 11:17

    Just subtract the two dates:

    select date '2000-01-02' - date '2000-01-01' as dateDiff
    from dual;
    

    The result will be the difference in days.

    More details are in the manual:
    https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042

    0 讨论(0)
  • 2020-11-30 11:18

    In Oracle, you can simply subtract two dates and get the difference in days. Also note that unlike SQL Server or MySQL, in Oracle you cannot perform a select statement without a from clause. One way around this is to use the builtin dummy table, dual:

    SELECT TO_DATE('2000-01-02', 'YYYY-MM-DD') -  
           TO_DATE('2000-01-01', 'YYYY-MM-DD') AS DateDiff
    FROM   dual
    
    0 讨论(0)
  • 2020-11-30 11:27

    You can simply subtract two dates. You have to cast it first, using to_date:

    select to_date('2000-01-01', 'yyyy-MM-dd')
           - to_date('2000-01-02', 'yyyy-MM-dd')
           datediff
    from   dual
    ;
    

    The result is in days, to the difference of these two dates is -1 (you could swap the two dates if you like). If you like to have it in hours, just multiply the result with 24.

    0 讨论(0)
  • 2020-11-30 11:29

    We can directly subtract dates to get difference in Days.

        SET SERVEROUTPUT ON ;
        DECLARE
            V_VAR NUMBER;
        BEGIN
             V_VAR:=TO_DATE('2000-01-02', 'YYYY-MM-DD') - TO_DATE('2000-01-01', 'YYYY-MM-DD') ;
             DBMS_OUTPUT.PUT_LINE(V_VAR);
        END;
    
    0 讨论(0)
提交回复
热议问题