2012-10-27 86 views
0

我在sqlite3的DATABSE一個表,該表具有以下字段:SQLite的查詢當前時間和時間戳

id text not null, phonenum text not null, timeofcall text not null 

時間戳基本上插入的時間(在一個人的時候調用它插入我的應用程序遠程數量,也呼叫的時間)

我想所有行的最後一分鐘內的特定號碼,像:

SELECT * FROM callstbl WHERE phonenum = '07857463756' AND timeofcall < 1 minute ago; 

如何是值得LIK這完成了嗎?

編輯:

當我通過頂部的海報作爲建議使用此查詢我回來的每一行的「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'); 

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

+0

爲什麼'timeofcall'存儲爲'text'? –

+0

從我所看到的sqlite是'鬆散類型' – brux

回答

1

我會建議其最好有一列說,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(); 

這樣你在任何類型的基於時間的查詢充分的靈活性。

+0

謝謝,這非常有幫助 – brux

2

假設timeofcalla format that SQLite understands,使用方法:

... WHERE timeofcall >= datetime('now', '-1 minutes') 
+0

在我的Java我有這樣的:String sql =「select * FROM callstbl WHERE timeofcall> = datetime('now','-1 minutes')AND phonenum ='」+ NUM + 「'」; – brux

+0

當我使用該查詢時,它會返回每一行phonenum匹配的行,它就好像它處理'AND',好像它是'OR' – brux

+0

感謝您的幫助,我將其他標記爲正確,因爲他有更多平臺特定信息我也是,+1 – brux