Create two parameters called start_date and end_date, of type Date. Then, in your query, use the following syntax (I have an Oracle data source; adjust for your own needs):
WHERE TRUNC(the_date) BETWEEN COALESCE($P{start_date}, TRUNC(sysdate-7))
AND COALESCE($P{end_date}, TRUNC(sysdate))
If the user is running the report manually, he or she can input a start and end date through your input controls. If the report is a scheduled report, leave the input controls empty and it will default to the last 7 days.