As stated in the question I am attempting to do a date comparison for tasks that are done within a specific date range.
My model has a boolean called "Done" and a string that stores dates of completion called "DatesCompleted"
I currently have a query on that shows me all Done items limited to 25 and it works just fine:
return db.QueryAsync<Tasks>("SELECT * FROM [Tasks] WHERE [Done] = 1 LIMIT 25");
How can I get only dates completed that are 7 days prior to today? This is kind of sudo code how I'd expect to get the solution but I don't know how to write it out in SQLite-net-pcl,
return db.QueryAsync<Tasks>("SELECT * FROM [Tasks] WHERE [Done] = 1 AND [DatesCompleted] >= (DateTime.Now - new TimeSpan(7,0,0,0))` LIMIT 25");
Edit: After attempting the first solution I am having no luck, all items regardless of completion time appear to show up. I tried this:
foreach(var ii in TaskListDoneSource)
{
System.Diagnostics.Debug.WriteLine(ii.Name + " completed on : " + ii.DateCompleted + " compared against " + (DateTime.Now-new TimeSpan(7,0,0,0)).ToString());
if (ii.DateCompleted > (DateTime.Now - new TimeSpan(7, 0, 0, 0)))
System.Diagnostics.Debug.WriteLine("The date completed has not quite hit 7 days");
}
The IF statement shows me that it is working when I am within 7 days but outside obviously no IF statement call. So that tells me I'm doing something wrong with the query recommended in first answer:
SELECT * FROM [Tasks] WHERE [Done] = 1 AND [DateCompleted] >= datetime('now', '-7 day')
EDIT 2: I got it working with that query provided. Only thing that was off was off was having the DateCompleted as a DateTime instead of a string that was formatted properly in my model. (https://www.sqlite.org/lang_datefunc.html)