DateDiff Function | Database Journal

DateDiff Function

Jul 28, 2008
1 minute read




>>Script Language and Platform: Oracle
Determine the elapsed time between two dates stated in a specific interval.


Author: Paul Hunter


create or replace function DateDiff(DatePart varchar, StartDate date, EndDate date)
/*
================================================================================
Developer:  Paul Hunter
Created  :  05/22/2007
Purpose  :  Returns the DatePart difference between the two dates provided.
Arguments:
    DatePart :  Specifies which part of the date to calculate the difference.
                The table below list DateParts and abbreviations recognized
                    1)    D, DD, Day;
                    2)    M, MM, Month;
                    3)    Y, YY, Year;
                    4)    H, HH, Hour;
                    5)    N, NN, Minute;
                    6)    S, SS, Second;
    StartDate:  The beginning date for the calculation
    EndDate  :  The ending date for the calculation
================================================================================
*/
return number
as
result    number;
sType    char(1);
begin
    sType := substr(upper(DatePart), 1, 1);
    if sType = ‘S’ then
        result := trunc(86400 * (EndDate – StartDate));
    end if;
    if sType = ‘H’ then
        result := trunc(((86400 * (EndDate – StartDate)) / 60) / 60);
    end if;
    if sType = ‘D’ then
        result := trunc((((86400 * (EndDate – StartDate)) / 60) / 60) / 24);
    end if;
    if sType = ‘W’ then
        result := trunc(((((86400 * (EndDate – StartDate)) / 60) / 60) / 24) / 7);
    end if;
    if sType = ‘Y’ then
        result := trunc(months_between(EndDate, StartDate) / 12);
    end if;
    if sType = ‘N’ then
        result := trunc((86400 * (EndDate – StartDate)) / 60);
    end if;
    if sType = ‘M’ then
        if upper(DatePart) like ‘MI%’ then
            result := trunc((86400 * (EndDate – StartDate)) / 60);
        else
            result := trunc(months_between(EndDate, StartDate));
        end if;
    end if;
return result;
exception when others then return null;
end;


Disclaimer: We hope that the information on these script pages is valuable to you. Your use of the information contained in these pages, however, is at your sole risk. All information on these pages is provided “as -is”, without any warranty, whether express or implied, of its accuracy, completeness, or fitness for a particular purpose… Disclaimer Continued




Back to Database Journal Home

Database Journal Logo

DatabaseJournal.com publishes relevant, up-to-date and pragmatic articles on the use of database hardware and management tools and serves as a forum for professional knowledge about proprietary, open source and cloud-based databases--foundational technology for all IT systems. We publish insightful articles about new products, best practices and trends; readers help each other out on various database questions and problems. Database management systems (DBMS) and database security processes are also key areas of focus at DatabaseJournal.com.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.