I agree it isn't optimal, but works till we find a better solution - We schedule the reports for our customers so they never see the pain. For predetermined time periods, like last month, last week, etc, we do the following to offset from the current date, again not optimal, but may give you some ideas: Last Month: date_format(d.full_date, '%Y-%m') = date_format(DATE_SUB(CURDATE(),INTERVAL 1 month), '%Y-%m') This Month: d.date_key between getDateKey(date_format(CURDATE(), '%Y-%m-01')) and getDateKey(date_format(curdate(), '%Y-%m-%d')) The missing part (we do not have) is to have a drop down input control that allows users to choose: "This Week", "Last Week", "This Month", "Last Month", "This Quarter", etc. Maybe you could do a scriplet that takes in the desired time period ("This Month") and returns the correct start and end dates for the where clause.