Brian Dunning's FileMaker Custom Functions

DateRange ( startDate ; finishDate ; returnType )

Calculate the number of days "d", months "m" or years "y" between two dates

  Average rating: 4.3 (32 votes) Log in to vote

Michael Richards   Michael Richards
itraining
http://www.itraining.com.au

Share on Facebook Share on Twitter

  Sample input:
DateRange ( 1/1/2007 ; 31/12/2007 ; "d" )
DateRange ( 1/1/2007 ; 31/12/2007 ; "m" )
DateRange ( 1/1/2007 ; 31/12/2007 ; "y" )


/*
dates shown are in Australian format d/m/yyyy
*/
  Sample output:
365
12
1

  Function definition: (Copy & paste into FileMaker's Edit Custom Function window)

NOTES:
In a nutshell , the LET statement prepares and calculates all required variables.

The "availableDates" variable decides if both the startDate and finishDate fields supplied are available and valid.
Alternatively, only the startDate is available and valid so a date range can be calculated from the current date.

The "days" variable calculates the number of days between the two date fields.
Alternatively, the current date is used if the only the startDate field is available and valid.

The "months" variable approximates the number of months between the two date fields using the "days" calculation.
Similarly, "years" variable approximates the number of years between the two date fields using the "days" calculation.

Finally the "returnType" parameter is entered as either "d", "m" or "y" which returns the number of days, months (approximate) or years (approximate) respectively.

Probably should trap for startDate < finishDate in the LET function as well. You can do that bit.

 

Comments

Fabio   Fabio, Italy
Jun 26, 2017
There is a problem when return 3 years in months.

i.e.

Let (
[
~startDate = Date ( 7; 1; 2017 );
~endDate = Date ( 6; 30; 2020 );
~result = round ( ( ~endDate - ~startDate ) / 30; 0 )
];

~result //37 wrong result!

)


round ( ( ~endDate - ~startDate ) / 30; 0 ) should be:
round ( ( ~endDate - ~startDate ) / 30.42; 0 )
 

Log in to post comments.

 

Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.

Under construction. Email me your wish list for improvements.