No - this isn't the best way to get the past nn days/weeks/months. First - what is the data type of ACTION_DT? If it is a date then you can safely use BETWEEN - but if it is a datetime you will not be able to get the correct data.
Instead of worrying about whether or not you can use BETWEEN - it is much easier to do this:
ACTION_DT >= dateadd(day, datediff(day, 0, getdate()) - 7, 0)
AND ACTION_DT < dateadd(day, datediff(day, 0, getdate()), 0)
This will return all datetimes from 7 days ago through today - not including today. Unless you specifically want to include everything up to the point in time the query is run - and you expect to have different results every time this is run then you should not include today's data.
If ACTION_DT is a date column and you really want to use BETWEEN and include today:
ACTION_DT BETWEEN cast(getdate() - 7 AS date) AND cast(getdate() AS date)
If the 7 days includes today, then you would only go back 6 days:
ACTION_DT BETWEEN cast(getdate() - 6 AS date) AND cast(getdate() AS date)
Or - if you want the past 7 days not including today:
ACTION_DT BETWEEN cast(getdate() - 7 AS date) AND cast(getdate() - 1 AS date)
The key is to insure that you are not including the time portion of a datetime. DATEADD(day,-7,GETDATE()) returns a datetime value 7 days ago at this time - which will be different every time it is run today.