首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite-net-pcl比较日期

SQLite-net-pcl比较日期
EN

Stack Overflow用户
提问于 2022-04-25 19:17:36
回答 1查看 123关注 0票数 0

正如问题中所述,我试图对在特定日期范围内完成的任务进行日期比较。

我的模型有一个名为"Done“的布尔值,以及一个存储完成日期的字符串,称为"DatesCompleted”。

目前,我有一个查询,向我展示了所有已完成的限制为25项的项,它运行得很好:

代码语言:javascript
复制
return db.QueryAsync<Tasks>("SELECT * FROM [Tasks] WHERE [Done] = 1 LIMIT 25");

我怎样才能完成今天前7天的约会呢?这是一种sudo代码,我希望它能得到解决方案,但我不知道如何用SQLite-net写出它,

代码语言:javascript
复制
return db.QueryAsync<Tasks>("SELECT * FROM [Tasks] WHERE [Done] = 1 AND [DatesCompleted] >= (DateTime.Now - new TimeSpan(7,0,0,0))` LIMIT 25");

编辑:在尝试第一个解决方案后,我没有运气,所有项目,无论完成时间似乎出现。我试过这个:

代码语言:javascript
复制
 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)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-25 19:31:25

假设在[DatesCompleted]中以ISO格式存储时间戳,则在当前时间戳前7天获得时间戳的正确SQLite语法是:

代码语言:javascript
复制
datetime('now', '-7 day')

或者:

代码语言:javascript
复制
datetime('now', '-7 day', 'localtime')

在当地时间获得时间戳。

因此,您的查询应该是:

代码语言:javascript
复制
SELECT * 
FROM [Tasks] 
WHERE [Done] = 1 AND [DatesCompleted] >= datetime('now', '-7 day')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72004663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档