I would suggest you do the following:
1. Today() function can give you a different result from what you expect. Review the help article regarding the different timer modes available for the today() function and use the one that is most appropriate for your case.
2. Since you are comparing dates and not factoring in time component, your variables can be defined as:
let varLast21Days = Num((Today(1) - 21)) // set the timer mode to give the date on the date of the function call
let varToday = Today(1);
3. Finally make sure your date fields don't have time component so your where clause should be:
from MetricsTable where Date(Floor(date_created)) = '$(varToday)' or Date(Floor(date_modified)) >= '$(varLast21Days)';