View comments | RSS feed

DateDiff

Description

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

Returns

A number of units, of type datepart.

Category

Date and time functions

Function syntax

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

See also

DateAdd, DatePart, CreateTimeSpan

History

ColdFusion MX:

Parameters

Parameter Description

datepart

String specifying 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>

.

ColdFusion MX 7 | ColdFusion MX 6.1 | ColdFusion MX | Forums | Developer Center | KnowledgeBase | Bug Reporting

Version 7

Comments


HeloWorld said on Sep 25, 2007 at 6:45 PM :
<!--- calculate the difference in minutes between start and endtime --->
<cfset totalminutes = #datediff("n", form.starttime, form.endtime)#>
<!--- Creatye an hopurs variable --->
<cfset hours = int(totalminutes)>
<!--- create a minutes variable --->
<cfset minutes = int(totalminutes mod 60)>

<!--- add a leading '0' for hours if the there isn't one AND it is needed --->
<cfif len(hours) eq 1>
<cfset hours = '0' & hours>
</cfif><!--- end of leading '0' ---->

<!--- add a leading '0' for hours if the there isn't one AND it is needed --->
<cfif len(minutess) eq 1>
<cfset minutes = '0' & minutes>
</cfif><!--- end of leading '0' ---->

<cfset duration1 = hours & ':' >
<cfset duration = duration1 & minutes>
halL said on Sep 26, 2007 at 10:08 AM :
I took The example from HelloWorld, fixed the typo, and added a form for input. Here it is:

<cfif IsDefined("Form.submitit")>
<!--- calculate the difference in minutes between start and endtime --->
<cfset totalminutes = #datediff("n", form.starttime, form.endtime)#>
<!--- Creatye an hopurs variable --->
<cfset hours = int(totalminutes)>
<!--- create a minutes variable --->
<cfset minutes = int(totalminutes mod 60)>

<!--- add a leading '0' for hours if the there isn't one AND it is needed --->
<cfif len(hours) eq 1>
<cfset hours = '0' & hours>
</cfif><!--- end of leading '0' ---->

<!--- add a leading '0' for hours if the there isn't one AND it is needed --->
<cfif len(minutes) eq 1>
<cfset minutes = '0' & minutes>
</cfif><!--- end of leading '0' ---->

<cfset duration1 = hours & ':' >
<cfset duration = duration1 & minutes>
<cfoutput>
#duration#<br />
</cfoutput>
</cfif>

<cfform name="myf" format="html">
Start Time: <cfinput type="text" validate="time" name=starttime><br />
End Time:&nbsp;&nbsp;<cfinput type="text" validate="time" name=endtime><br />
<cfinput type="submit" name="submitit">
</cfform>

 

RSS feed | Send me an e-mail when comments are added to this page | Comment Report

Current page: http://livedocs.adobe.com/coldfusion/7/htmldocs/00000440.htm