Help

Re: How do I return the most recent of two dates?

5116 0
cancel
Showing results for 
Search instead for 
Did you mean: 
Patrick_Kenned1
5 - Automation Enthusiast
5 - Automation Enthusiast

I have two rollups, one for “latest morning absences” and another for “latest evening absences”. What formula do I use to return the latest of the two?

22 Replies 22
Dan_Weaver
6 - Interface Innovator
6 - Interface Innovator

How do I use MAX() with two regular date values? I tried MAX({Start Date},{End Date}) but it always returns 0.

I don’t believe MAX() is intended for use with dates. That’s why the IS_BEFORE() and IS_AFTER() functions were mentioned. The comment immediately above yours contains a full formula example.

It works with dates, for instance in a Rollup field:

84928ba15c77d37192c338871df5a9e9154f4238.png

Yes, it works in rollup fields, but the question from @Dan_Weaver above was about comparing two regular date values, specifically pointing to an issue using MAX(). In formulas, MAX() doesn’t work with dates. Only numerical values.

Yuval_Greenfiel
5 - Automation Enthusiast
5 - Automation Enthusiast

I wish there was a MAX_DATE function. This monstrosity is what I used in its place:

DATETIME_FORMAT(DATETIME_PARSE(MAX(VALUE(DATETIME_FORMAT(IF({Publish Date}, {Publish Date}, '0'), 'X')), VALUE(DATETIME_FORMAT(IF({Due Date}, {Due Date}, '0'), 'X')), VALUE(DATETIME_FORMAT(IF({Completed Date}, {Completed Date}, '0'), 'X'))), 'X'), 'YYYY-MM-DD')

You can see I convert all the dates to a number using VALUE(DATETIME_FORMAT(IF. The IF is needed because you get an error for empty cells with DATETIME_FORMAT. The VALUE is needed because MAX doesn’t work with strings. Then at the end I format it back to a date.

Benito_Abraham
6 - Interface Innovator
6 - Interface Innovator

If I need to find the max or min values of a date field I do the following:

  1. I convert, in the original table, them to the format ‘YYYYDDDD’ usibg DATETIME_FORMAT(date,‘YYYYDDDD’)+0 , so I transform it to an integer field (int_date).
  2. On the receiving table I use a rollup with either a max or min values to recover the max/min ‘INTEGER’ field
  3. on the receiving table I convert back the ‘INTEGER’ field to a data field using the DATETIME_PARSE(int_date , ‘YYYYDDDD’,‘L’)
  4. done …
Mariusz_S
7 - App Architect
7 - App Architect

What would be a way to return last date of the call that already happened.
One of the dates is in the past and the other in the future.
So a rollup field won’t work
e4daffc61eedd45d28a5bc42eef678d52322ae66.png

Use a conditional rollup when calculating the maximum date. Set the condition to include only dates that are on or before today.

How would I miss this!
Thank you @kuovonne.

Your approach is very smart but the time formatting is wrong. I also used INT instead of hacking +0 to parse it to an integer. Other than that, great… too bad AirTable does not provide a better way to do this. It’s definitely not a friendly way to do it, in particular if you have 4 or 5 dates.

DATETIME_PARSE(MAX(INT(DATETIME_FORMAT({DATE1}, ‘YYYYMMDD’)),INT(DATETIME_FORMAT({DATE2}, ‘YYYYMMDD’))),“YYYYMMDD”)