Dear all,

Is someone available to help me understand the (10 year old) calculation presented on

subtract exactly one month from a date? - Calculation Engine (Define Fields) - FMForums.com

? (I don't have an account there and I prefer to ask here).

It says:

1| Let([

2| dayWant=Day(dateField);

3| dayEnd=Day(dateField-dayWant)];

4| Date(Month(dateField)-1;Day(Min(dayEnd;dayWant));Year(dateField)))

The purpose is to go back one month in time, in this way:

- 31st of Jan 2016 > 31 Dec 2015,
- 31 Dec 2015 > 30 Nov 2015,
- 31 Mar 2016 > 29 Feb 2016,
- 31 Mar 2015 > 28 Feb 2015.

The calulation works. But I would like to adapt it, so I would need to understand it

Say we take 31 Mar 2016 as an example.

Line 2: dayWant=Day(dateField);

So what happens: dayWant = *the day of* "31-Mar-2016" = 31

Line 3: dayEnd=Day(dateField-dayWant)];

Sowhat happens: dayEnd = *the day of* "31-Mar-2016" - 31 = 0

Line 4: Date(Month(dateField)-1;Day(Min(dayEnd;dayWant));Year(dateField)))

Sowhat happens: *Put date together with*:

Month: Mar minus 1 = Feb

Day: lowest of the two options 0 or 31 = 0

Year: 2016

Somewhere I'm going wrong. And it must be in line 3, but I can't figure it out. Any help is appreciated.

Please be aware that we're from places where we note dates differently. I thought all this is best readable for everyone using 3 letters for months.

Thanks, Regards, Thomas.

Dear Mike and Beverly,

Great!

I marked this as the correct answer because both your replies answer my question equally well.

Thanks for putting this in words. I'm going to test it all, so I get the hang of it!

Thanks, regards, Thomas.