DateDiff

Description

Determines the integer number of units by which date1 is less than date2.

Returns

A number of units, of type datepart.

Function syntax

DateDiff("datepart", "date1", "date2")

History

ColdFusion MX:

  • Changed how negative date differences are calculated: this function calculates negative date differences correctly; its output may be different from that in earlier releases.

  • Changed the w and ww masks; they determine the number of full weeks between the two dates.

Parameters

Parameter

Description

datepart

String that specifies the units in which to count; for example yyyy requests a date difference in whole years.

  • yyyy: Years

  • q: Quarters

  • m: Months

  • y: Days of year (same as d)

  • d: Days

  • w: Weekdays (same as ww)

  • ww: Weeks

  • h: Hours

  • n: Minutes

  • s: Seconds

date1

Date/time object, in the range 100 AD–9999 AD.

date2

Date/time object, in the range 100 AD–9999 AD.

Usage

The DateDiff function determines the number of complete datepart units between the two dates; for example, if the datepart parameter is "m" and the dates differ by 55 days, the function returns 1.

Enclose string constant dates in quotation marks. If the text contains only numbers (such 1932), and is not surrounded by quotation marks, ColdFusion interprets it as a date/time object, resulting in an incorrect value.

Example

<cfif IsDefined("form.value")> 
    <cfset value = form.value> 
</cfif> 
<cfif IsDefined("form.type")> 
    <cfset type = form.type> 
</cfif> 
 
<cfif IsDefined("form.date1") and IsDefined("form.date2")> 
 
    <cfif IsDate(form.date1) and IsDate(form.date2)> 
     
        <p>This example uses DateDiff to determine the difference 
        in  
        <cfswitch expression = "#form.type#"> 
            <cfcase value="yyyy">years</cfcase> 
            <cfcase value="q">quarters</cfcase> 
            <cfcase value="m">months</cfcase> 
            <cfcase value="y">days</cfcase>     
            <cfcase value="d">days</cfcase>     
            <cfcase value="w">weekdays</cfcase>     
            <cfcase value="ww">weeks</cfcase>     
            <cfcase value="h">hours</cfcase>     
            <cfcase value="n">minutes</cfcase>     
            <cfcase value="s">seconds</cfcase>         
            <cfdefaultcase>years</cfdefaultcase> 
        </cfswitch> 
             dateparts between date1 and date2. 
         
        <cfif DateCompare("#form.date1#","#form.date2#") is not 0> 
        <p>The difference is <cfoutput>#Abs(DateDiff(type, form.date2, form.date1))#</cfoutput> 
        <cfswitch expression = "#form.type#"> 
            <cfcase value="yyyy">years</cfcase> 
            <cfcase value="q">quarters</cfcase> 
            <cfcase value="m">months</cfcase> 
            <cfcase value="y">days</cfcase>     
            <cfcase value="d">days</cfcase>     
            <cfcase value="w">weekdays</cfcase>     
            <cfcase value="ww">weeks</cfcase>     
            <cfcase value="h">hours</cfcase>     
            <cfcase value="n">minutes</cfcase>     
            <cfcase value="s">seconds</cfcase>         
            <cfdefaultcase>years</cfdefaultcase> 
        </cfswitch>. 
        <cfelse> 
        <p>The two dates are equal!Try changing one of the values ... 
        </cfif> 
     
    <cfelse> 
    <p>Please enter two valid date/time values, formatted like this: 
    <cfoutput>#DateFormat(Now())#</cfoutput>     
    </cfif>     
 
</cfif> 
<form action="index.cfm" method="post"> 
 
<pre> 
Date 1 
<input type="Text" name="date1" value="<cfoutput>#DateFormat(Now())#</cfoutput>"> 
Date 2 
<input type="Text" name="date2" value="<cfoutput>#DateFormat(Now())#</cfoutput>"> 
What kind of unit to show difference? 
    <select name="type"> 
        <option value="yyyy" selected>years 
        <option value="q">quarters 
        <option value="m">months 
        <option value="y">days of year 
        <option value="d">days 
        <option value="w">weekdays 
        <option value="ww">weeks 
        <option value="h">hours 
        <option value="n">minutes 
        <option value="s">seconds 
    </select> 
</pre> 
 
<input type="Submit" name=""><input type="Reset"> 
</form>