簡體   English   中英

sqlite查詢當前時間和時間戳

[英]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');

我取回數據庫中的每一行。

假設timeofcallSQLite可以理解的格式 ,請使用:

... 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM