{{fbdoc item="title" value="DateDiff"}}----
Gets the difference of two dates measured by a specified interval

{{fbdoc item="syntax"}}##
	[[KeyPgDeclare|declare]] [[KeyPgFunction|function]] **""DateDiff""** ( [[KeyPgByref|byref]] //interval// [[KeyPgAs|as]] [[KeyPgConstQualifier|const]] [[KeyPgString|string]], [[KeyPgByval|byval]] //serial1// [[KeyPgAs|as]] [[KeyPgDouble|double]], [[KeyPgByval|byval]] //serial2// [[KeyPgAs|as]] [[KeyPgDouble|double]], [[KeyPgByval|byval]] //firstdayofweek// [[KeyPgAs|as]] [[KeyPgLong|long]] = fbUseSystem, [[KeyPgByval|byval]] //firstdayofyear// [[KeyPgAs|as]] [[KeyPgLong|long]] = fbUseSystem ) [[KeyPgAs|as]] [[KeyPgLongint|longint]]
##
{{fbdoc item="usage"}}##
	#include "vbcompat.bi"
	//result// = **""DateDiff""**( //interval//, //date_serial1//, //date_serial2// [, //firstdayofWeek// [, //firstweekofyear// ] ] )
##
{{fbdoc item="param"}}
	##//interval//##
		the unit of time (interval) with which to measure the difference
	##//date_serial1//##
		starting date serial
	##//date_serial2//##
		end date serial
	##//firstdayofweek//##
		first day of the week
	##//firstdayofyear//##
		first day of the year

{{fbdoc item="ret"}}
	Returns a ##[[KeyPgLongint|longint]]## corresponding to the number of ##//interval//##s found between two [[ProPgDates|Date Serials]].
	
	If ##//date_serial1//## > ##//date_serial2//##, the result is negative.

{{fbdoc item="desc"}}
	##//interval//## is specified as follows:
	
		{{table columns="2" cellpadding="1" cells="value;interval;yyyy;years;q;quarter(three months);m;months;w; seven day periods; ww;calendar weeks;d,y;days;h;hours;n;minutes;s;seconds"}}  
	
	##//first_dayofweek//## Affects the counting when ##'ww'## interval is used.
	
		{{table columns="3" cellpadding="1" cells="value;first day of week;constant;omitted;sunday;###;0;local settings;fbUseSystem;1;sunday;fbSunday;2;monday;fbMonday;3;tuesday;fbTuesday;4;wednesday;fbWednesday;5;thursday;fbThursday;6;friday;fbFriday;7;saturday;fbSaturday"}}
	
	##//first_weekofyear//## specifies which year (previous or next) that the week which spans the end of one year and the beginning of the next should included with.
	
		{{table columns="3" cellpadding="1" cells="value;first week of year;constant;0;local settings;fbUseSystem;1;January 1's week;fbFirstJan1;2;first weeks having 4 days in the year;fbFirstFourDays;3;first full week of year;fbFirstFullWeek"}}
	
	Notice if you do an arithmetical subtraction of two date serials you get the difference in days.
	
	The compiler will not recognize this function unless ##vbcompat.bi## or ##datetime.bi## is included.

{{fbdoc item="ex"}}
{{fbdoc item="filename" value="examples/manual/dates/datediff.bas"}}%%(freebasic)
#include "vbcompat.bi"

dim s as string, d1 as double, d2 as double

line input "Enter your birthday: ", s

if Isdate( s ) then
  d1 = DateValue( s )
  d2 = now()

  print "You are " & DateDiff( "yyyy", d1, d2 ) & " years old."
  print "You are " & DateDiff( "d", d1, d2 ) & " days old."
  print "You are " & DateDiff( "s", d1, d2 ) & " seconds old."

else
  print "Invalid date"

end if
%%

{{fbdoc item="diff"}}
	- Did not exist in QB. This function appeared in Visual Basic.

{{fbdoc item="see"}}
	- [[ProPgDates|Date Serials]]

{{fbdoc item="back" value="CatPgDate|Date and Time Functions"}}