2017-03-25 2 views
1

ich auf diese Weise nur codiert:Warum ist die Datum/Zeitstempel-Differenz immer NULL?

Cursor cursor; 
String sql = "SELECT l.acao, SUM(strftime('%s',l.data_fim) - strftime('%s',l.data_inicio)) AS total_time," + 
      "FROM logs AS l " + 
      "WHERE l.data_fim IS NOT NULL " + 
      "GROUP BY l.acao"; 

ich die Sekunden zwischen zwei Daten summieren müssen, und ich nannte diese Summe total_time. Aber wenn ich versuche, das Ergebnis total_time bekomme es immer null zurückkehrt, siehe nächsten Code:

String totalTimeInSeconds = (String) cursor.getString(cursor.getColumnIndex("total_time")); 

Wenn ich diese gleiche Abfrage in SqlLiteStudio setzte es funktioniert perfekt. Was mache ich falsch?

Antwort

0

anstelle von cursor.getColumnIndex() können Sie den genauen Index darin eingeben. In Ihrem Fall ist der total_time Index 1. Beispiel: cursor.getString(1) oder cursor.getInt(1)

+0

danke für die antwort mich, aber ich habe das versucht, mit breakpoint ich kann die spalte sehen, aber der wert ist immer null, ich denke, ist etwas, wenn ich einige funktionen in select abschnitt –

1

Ihr Problem ist, dass der Wert im Cursor tatsächlich NULL ist.

Dies kann nur passieren, wenn die ursprünglichen Datumswerte nicht in einem der supported date formats sind. Sie müssen Ihre Datenbank ändern.

+0

Man, ich denke das ist es, denn das feld In der Tabelle ist datetime und der Wert wird als 'TT/MM/JJJJ' Format gespeichert, krank versuchen, im amerikanischen Format zu speichern, zu sehen. Thanks –

+0

Ich habe das Datum im amerikanischen Format aufgezeichnet und funktionierte perfekt, danke mehr einmal. –

+0

Wenn die Antwort Ihnen geholfen hat, bitte [akzeptieren] (http://stackoverflow.com/help/accepted-answer). –