Keep an Access Monthly Date Series Anchored When February Has Fewer Days
A monthly series can mean the same day relative to its original start, or one month after the previous result. Those rules cease to be equivalent when a short month adjusts the day. Decide which rule the series is meant to preserve.
This example uses desktop Access with the Gregorian calendar. DateAdd("m", number, date) adds months and adjusts an otherwise invalid date to a valid one: January 31 plus one month becomes February's last day. DateSerial constructs a date from year, month and day arguments; use four-digit years and avoid ambiguous typed date strings.
Compare three expressions from one anchor
In a disposable SELECT query based on a practice table, open Design View and add each expression to the Field row of a separate empty column. Use one clearly identified practice row so repeated output does not distract from the date calculation:
FirstMonth: DateAdd("m", 1, DateSerial(2026, 1, 31))
FromAnchor: DateAdd("m", 2, DateSerial(2026, 1, 31))
FromPrevious: DateAdd("m", 1, DateAdd("m", 1, DateSerial(2026, 1, 31)))
Read the complete returned dates. FirstMonth should be 28 February 2026. FromAnchor should be 31 March 2026, whereas FromPrevious should be 28 March 2026. The chained expression has carried forward February's adjusted day; the anchored expression still starts from January 31.
Neither rule is automatically the business requirement. A series tied to the original day and a process triggered one month after its previous adjusted date describe different schedules. Keep that decision visible rather than repairing individual displayed dates after each refresh.
Test a year with a different February
Repeat using a 31 January 2028 anchor. The one-month result is 29 February; the anchored two-month result remains 31 March, while the chained result becomes 29 March. This second case exposes reliance on a single non-leap-year example.
For an anchored series, retain the original anchor and a separate integer month offset for each occurrence. Evaluate each occurrence from that anchor instead of feeding the previous adjusted result into the next calculation. Confirm that the chosen rule also matches the required behaviour for an ordinary mid-month starting date.
These expressions establish calendar-month arithmetic only. They do not apply working-day exclusions or decide a contractual due-date policy. Accept the series when its rule is agreed and the short-month cases match that rule, with the original anchor still available for explanation.
Sources: Microsoft: DateAdd; Microsoft: supporting procedure.