Java sqlite查询当前时间和时间戳
我的sqlite3数据库中有一个表,其中包含以下字段:Java sqlite查询当前时间和时间戳,java,sql,database,sqlite,Java,Sql,Database,Sqlite,我的sqlite3数据库中有一个表,其中包含以下字段: id text not null, phonenum text not null, timeofcall text not null 时间戳基本上是插入的时间(在我的应用程序中,当有人打电话时,它会插入电话号码和通话时间。) 我希望在最后一分钟内获得特定数字的所有行,例如: SELECT * FROM callstbl WHERE phonenum = '07857463756' AND timeofcall < 1 minute
id text not null, phonenum text not null, timeofcall text not null
时间戳基本上是插入的时间(在我的应用程序中,当有人打电话时,它会插入电话号码和通话时间。)
我希望在最后一分钟内获得特定数字的所有行,例如:
SELECT * FROM callstbl WHERE phonenum = '07857463756' AND timeofcall < 1 minute ago;
我的日期时间字符串(timeofcall)的格式为yyyy MM dd HH:MM:ss
如果我这么做的话
SELECT * FROM callstbl WHERE timeofcall >= datetime('now', '-1 minutes');
我将返回数据库中的每一行。假设
timeofcall
处于启用状态,请使用:
假设
timeofcall
处于启用状态,请使用:
我建议最好在您的表中有一列显示,timeOfCallMili,以毫秒为单位存储时间。这样,您就更容易根据日期/时间进行查询。 您的查询将类似于
WHERE timeOfCallMili >= System.currentTimeMillis() - 60000
或者说,如果希望在7天内(或任何特定日期)获取记录,则可以使用日历对象来表示该日期/时间
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();
通过这种方式,您可以在任何类型的基于时间的查询上获得充分的灵活性。我建议最好在表中设置一列,例如,timeOfCallMili,该列以毫秒为单位存储时间。这样,您就更容易根据日期/时间进行查询。 您的查询将类似于
WHERE timeOfCallMili >= System.currentTimeMillis() - 60000
或者说,如果希望在7天内(或任何特定日期)获取记录,则可以使用日历对象来表示该日期/时间
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();
通过这种方式,您可以在任何类型的基于时间的查询上获得充分的灵活性。为什么
timeofcall
存储为text
?从我看到的sqlite是“松散类型”的,为什么timeofcall
存储为text
?从我看到的sqlite在我的java中是“松散类型”的,我有以下内容:字符串sql=“从callstbl中选择*,其中timeofcall>=datetime('now','-1分钟'),phonenum='”+num+“'";当我使用该查询时,它会返回phonenum匹配的每一行,就好像它将“AND”视为是“或”感谢您的帮助,我将另一行标记为正确,因为他也为我提供了更多特定于平台的信息,+1在我的java中,我有以下内容:String sql=“select*FROM callstbl where timeofcall>=datetime('now','-1分钟'))phonenum=“+num+”;当我使用该查询时,它会返回phonenum匹配的每一行,就好像它将'AND'视为'OR'感谢您的帮助,我将另一行标记为正确,因为他也为我提供了更多特定于平台的信息,+1