正如问题中所述,我试图对在特定日期范围内完成的任务进行日期比较。
我的模型有一个名为"Done“的布尔值,以及一个存储完成日期的字符串,称为"DatesCompleted”。
目前,我有一个查询,向我展示了所有已完成的限制为25项的项,它运行得很好:
return db.QueryAsync<Tasks>("SELECT * FROM [Tasks] WHERE [Done] = 1 LIMIT 25");我怎样才能完成今天前7天的约会呢?这是一种sudo代码,我希望它能得到解决方案,但我不知道如何用SQLite-net写出它,
return db.QueryAsync<Tasks>("SELECT * FROM [Tasks] WHERE [Done] = 1 AND [DatesCompleted] >= (DateTime.Now - new TimeSpan(7,0,0,0))` LIMIT 25");编辑:在尝试第一个解决方案后,我没有运气,所有项目,无论完成时间似乎出现。我试过这个:
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");
}IF语句显示,当我在7天内时,它是工作的,但在外面显然没有IF语句调用。因此,这告诉我,我对第一个答案中建议的查询做了一些错误:
从完成的任务中选择*和DateCompleted >=日期时间(‘now’,'-7天‘)
编辑2:我让它使用提供的查询。唯一被关闭的是将DateCompleted作为一个DateTime,而不是在我的模型中正确格式化的字符串。(https://www.sqlite.org/lang_datefunc.html)
发布于 2022-04-25 19:31:25
假设在[DatesCompleted]中以ISO格式存储时间戳,则在当前时间戳前7天获得时间戳的正确SQLite语法是:
datetime('now', '-7 day')或者:
datetime('now', '-7 day', 'localtime')在当地时间获得时间戳。
因此,您的查询应该是:
SELECT *
FROM [Tasks]
WHERE [Done] = 1 AND [DatesCompleted] >= datetime('now', '-7 day')https://stackoverflow.com/questions/72004663
复制相似问题