The first day of the month is the usual key for monthly reporting: every date in September 2026 becomes 1 September 2026, and the year stays attached, so September 2025 and September 2026 remain separate. In QuickSight it is one function, truncDate.

Copy and paste

First day of the month of a date:

truncDate('MM', {Order Date})

First day of the next month:

addDateTime(1, 'MM', truncDate('MM', {Order Date}))

First day of the previous month:

addDateTime(-1, 'MM', truncDate('MM', {Order Date}))

First day of the current month:

truncDate('MM', now())

What truncDate returns

truncDate(period, date) keeps the date down to the period you name and sets everything below it to the start: the day becomes 1 and the time becomes midnight.

Order Date Month start Next month Previous month
2026-09-15 2026-09-01 2026-10-01 2026-08-01
2026-09-30 2026-09-01 2026-10-01 2026-08-01
2026-10-01 2026-10-01 2026-11-01 2026-09-01
2026-01-31 2026-01-01 2026-02-01 2025-12-01

The result is a date, not text, so it sorts in calendar order, works in date filters and can be passed to the other date functions.

Truncate first, then add months

The next and previous month formulas truncate before they add. The order matters. addDateTime moves a date by whole months, and the AWS documentation does not say what it returns when the target month is shorter, for example one month after 31 January. A first day of the month always exists in the target month, so truncating first gives the same answer on every engine and every date.

Calculation or field well

If you only want a chart by month, you don’t need a calculated field: put {Order Date} in the field well and set its aggregation to Month. Use the calculated field when the month has to be a value:

Where to create it

A calculated field added to the dataset is computed when SPICE is refreshed and is available in every analysis. A field added in an analysis exists only there. For truncDate('MM', {Order Date}) either works.

Formulas that call now() belong in the analysis. In a SPICE dataset, row-level calculated fields are stored at refresh time, so “the current month” would stay frozen at the last refresh.

Related guides

Checked against the Amazon Quick Sight function reference (October 2026). The example results were recomputed in DuckDB.

References