2017-03-20 10 views
0

私はSQLiteのテーブルには5列で "Att_Table" と名付けています2つのsqliteの列の間の時間差を計算し、EDITTEXTに結果を示す

  • ID
  • timein
  • タイムアウト

私はこれらの列に2つの別のアクティビティ(挿入と更新を使用)。今私はtimeouttimeinの間の時間差を計算して、合計勤務時間を計算したいと思います。

また、その結果を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; 
} 

エミュレータは、クエリ内のエラー(構文エラー)を示しています。私はアンドロイドプログラミングの新人です。インターネットでこのトピックに関するチュートリアルを見つけることができませんでしたので、私はこのコードをいくつかのコードで試しました。

この方法は、活動中です:

public void working_hours() { 

     Cursor result = mydb.workinghours(); 
     w_hours.setText(result.toString()); 

    } 

w_hours私は総労働時間を表示したい場所のEditTextです。

私はここで新しいです、私は何か愚かなことをした場合は申し訳ありません。

+2

あなたは何を試しましたか? –

+2

コードを教えてください – JonZarate

+0

クエリに 'total'とは何ですか? –

答えて

0

Stringとしてdatetimeを格納します。そのため、文字列を互いに引き算することができないため、コードが機能しません。

文字列の時刻をJava Timeオブジェクトとして解析し、S​​QLiteではなくJavaで差異を計算する必要があります。

次の方法が役立ちます。最良の結果を得るには、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; 
} 
+0

しかし、sqlite coloumsを引くことができるいくつかのクエリを見てきました。 – Sheraz

+0

このリンクをチェック:http://stackoverflow.com/questions/18065846/sqlite-subtract-time-difference-between-two-tables-if-there-is-a-match – Sheraz

関連する問題