[英]sqlite query current time and timestamp
我的sqlite3數據庫中有一個表,其中包含以下字段:
id text not null, phonenum text not null, timeofcall text not null
時間戳基本上是插入時間(在我的應用中,當有人打電話時,它會插入電話號碼以及通話時間。)
我想在最后一分鍾內獲取特定數字的所有行,例如:
SELECT * FROM callstbl WHERE phonenum = '07857463756' AND timeofcall < 1 minute ago;
這樣的事情是如何完成的?
編輯:
當我使用此查詢作為頂部海報的建議時,我返回與“ phonenum”匹配的每一行,就像忽略時間功能一樣
String sql = "select * FROM callstbl WHERE timeofcall >= datetime('now', '-1 minutes') AND phonenum='"+num+"'";
我的日期時間字符串(timeofcall)的格式為yyyy-MM-dd HH:mm:ss
如果我只是做
SELECT * FROM callstbl WHERE timeofcall >= datetime('now', '-1 minutes');
我取回數據庫中的每一行。
假設timeofcall
是SQLite可以理解的格式 ,請使用:
... WHERE timeofcall >= datetime('now', '-1 minutes')
我建議最好在表中有一列timeOfCallMili來存儲時間(以毫秒為單位)。 這樣,您可以更輕松地根據日期/時間進行查詢。 您的查詢將類似於
WHERE timeOfCallMili >= System.currentTimeMillis() - 60000
或說您想在7天之內(或該日期的任何特定日期)獲取記錄,您可以僅使用Calendar對象代表該日期/時間。
Calendar queryTime = Calendar.getInstance(); //this instance gets the current date/time as default values
queryTime.set(Calendar.DATE, queryTime.get(Calendar.DATE) - 7); //setting date to 7 days back
queryTime.set(Calendar.HOUR, 0); //setting time to 0, as its set to current time by default.
queryTime.set(Calendar.MINUTE, 0);
所以現在您的查詢變成
WHERE timeOfCallMili >= queryTime.getTimeInMillis();
這樣,您可以在任何類型的基於時間的查詢上獲得完全的靈活性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.