如問題中所述,我正在嘗試對在特定日期范圍內完成的任務進行日期比較。
我的模型有一個名為“Done”的布林值和一個存盤完成日期的字串,名為“DatesCompleted”
我目前有一個查詢,顯示所有已完成的專案限制為 25 個,它作業得很好:
return db.QueryAsync<Tasks>("SELECT * FROM [Tasks] WHERE [Done] = 1 LIMIT 25");
我怎樣才能只獲得在今天之前 7 天完成的日期?這是一種 sudo 代碼,我希望如何獲得解決方案,但我不知道如何在 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");
編輯:在嘗試第一個解決方案后,我沒有運氣,無論完成時間如何,所有專案都會出現。我試過這個:
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 陳述句呼叫時它正在作業。所以這告訴我我在第一個答案中推薦的查詢有問題:
SELECT * FROM [Tasks] WHERE [Done] = 1 AND [DateCompleted] >= datetime('now', '-7 day')
編輯 2:我得到它與提供的查詢一起作業。唯一關閉的是將 DateCompleted 作為 DateTime 而不是在我的模型中正確格式化的字串。(https://www.sqlite.org/lang_datefunc.html)
感謝您的協助。
uj5u.com熱心網友回復:
假設[DatesCompleted]您以 ISO 格式存盤時間戳YYYY-MM-DD hh:mm:ss,正確的 SQLite 語法在當前時間戳前 7 天獲取時間戳是:
datetime('now', '-7 day')
或者:
datetime('now', '-7 day', 'localtime')
獲取本地時間的時間戳。
所以你的查詢應該是:
SELECT *
FROM [Tasks]
WHERE [Done] = 1 AND [DatesCompleted] >= datetime('now', '-7 day')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/464329.html
上一篇:從資料框中選擇多個日期范圍
