我有一个名为“Att_Table”的SQLite表,有5列:
我已经通过两个不同的Activity(使用insert和update)在这些列中插入了数据。现在,我想计算timeout
和timein
列之间的时差,以便计算总工时。
我还想在EditText中显示该结果。
此方法位于DatabaseHelper类中:
public Cursor workinghours() {
final String TABLE_NAME = "attendance";
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT total(strftime('%s', timeout) - strftime('%s', timein) FROM" +TABLE_NAME+ "WHERE _id='2' ";
Cursor cursor = db.rawQuery(selectQuery, null);
return cursor;
}
模拟器在查询中显示错误(语法错误)。我是android编程的新手,我在互联网上找不到关于这个主题的任何教程,所以我尝试了自己的一些代码。
此方法处于活动状态:
public void working_hours() {
Cursor result = mydb.workinghours();
w_hours.setText(result.toString());
}
w_hours是EditText,我想在其中显示总工作时间。
我是新来的,对不起,如果我做了些蠢事。
答案 0 :(得分:0)
SQLite将datetime
存储为String
。这就是为什么你的代码不起作用的原因,因为字符串不能相互减去。
您需要将String时间解析为Java Time
对象,然后用Java而不是SQLite计算差异。
以下方法可以提供帮助。您需要以24小时格式保存时间字符串以获得最佳效果。
public static String getTimeDuration(String StartTime24, String EndTime24)
{
String duration = "";
try
{
SimpleDateFormat parseFormat = new SimpleDateFormat("HH:mm");
Date startTime = parseFormat.parse(StartTime24);
Date endTime = parseFormat.parse(EndTime24);
long mills = endTime.getTime() - startTime.getTime();
long minutes = mills/(1000 * 60);
duration = "Difference is: " + minutes + " Minutes";
}
catch(ParseException ex)
{
// exception handling here
}
return duration;
}