Forum Discussion
Previous Month from NOW() or Today()
- 8 years ago
How about:
Measure = DATE(YEAR(TODAY()),MONTH(TODAY())-1,DAY(TODAY()))
?
Neither of the proposed solutions works fully due to the effects identified by Anonymous i.e. if the previous month doesn't contain the same 'day' value as 'today'. However, in my case, I needed to handle a change of year scenario but wasn't bothered about the actual 'day' value. I just wanted a measure to show the previous month/year in a card visual along the lines of 'January 2019' or 'June 2018' etc. This made it easy for me to still use the code to handle the year change with a little bit of change where the 'day' value is created - I just force it to always be a '1'.
_monthYearTitle =
IF (
MONTH ( TODAY () ) = 1,
/* YES */
FORMAT( DATE ( YEAR ( TODAY () ) - 1, 12, 1 ),"MMMM YYYY"),
/* NO */
FORMAT( DATE ( YEAR ( TODAY () ), MONTH ( TODAY () ) - 1, 1 ), "MMMM YYYY")
)I think the solution below solves the "different number of days in different month" and January issues. The main improvement on Anonymous's solution is taking the minimium of today's day and last month's last day using built in functions.
Previous MTD =
VAR start_of_prev_month = EOMONTH(TODAY(),-2) + 1
VAR mtd_prev_month = IF(MONTH(TODAY()) = 1,
DATE(YEAR(TODAY())-1, MONTH(12), MIN(DAY(TODAY()), DAY(EOMONTH(start_of_prev_month,0)))),
DATE(YEAR(TODAY()), MONTH(TODAY())-1, MIN(DAY(TODAY()), DAY(EOMONTH(start_of_prev_month,0)))))
RETURN(CALCULATE(SUM(RET[Trade Quantity]),'Date'[Date] >= start_of_prev_month, 'Date'[Date] <= mtd_prev_month))