Hallo Zusammen,
habe folgendes Problem, das mich in den Wahnsinn treibt.
Ich lese eine MySQL-DB aus. In der ersten Query (siehe Code) ermittle ich zuerst alle KdId’s und die dazugehörigen AktionId’s. Mit den gewonnenen KdId’s und AktionsId’s mache ich eine weitere Query, die mir alle Daten (verbunden mit der gewünschten KdId und AktionId) ausgibt. Soweit so gut, funktioniert auch alles ganz gut.
Die Ausgabe sieht dann so aus:
„date“ „KdId“ „AktionId“ „Clicks“
„2011-11-23 22:00:00“ „6002“ „7897“ „5“
„2011-11-24 00:00:00“ „6002“ „7897“ „8“
„2011-11-24 01:00:00“ „6002“ „7897“ „9“
…
Wie man sehen kann fehlt der Datensatz für 2011-11-23 23:00:00, weil es dort 0 Klicks gab. Meine Aufgabe ist es die fehlenden Datensätze zu ergänzen, und zwar so:
„date“ „KdId“ „AktionId“ „Clicks“
„2011-11-23 22:00:00“ „6002“ „7897“ „5“
„2011-11-23 23:00:00“ „6002“ „7897“ „0“
„2011-11-24 00:00:00“ „6002“ „7897“ „8“
„2011-11-24 01:00:00“ „6002“ „7897“ „9“
…
Der dazu gehörige Code:
…
Statement Stmt = conn.createStatement();
List daten = new ArrayList();
ResultSet rs = Stmt.executeQuery(„SELECT KdId, AktionId FROM meineDB GROUP BY …“);
while (rs.next()) {
Daten dat = new Daten(rs.getString(„KdId“),
rs.getString(„AktionId“));
daten.add(dat);
}
for(Daten dat : daten) {
LinkedList daten2 = new LinkedList ();
rs = Stmt.executeQuery(„SELECT * FROM meineDB WHERE KdId=“ + dat.getKdId()+ " AND AktionId=" +dat.getAktionId());
while(rs.next()) {
Daten2 dat2 = new Daten2(rs.getDate(„date“), rs.getTime(1), rs.getString(„kdId“), rs.getString(„AktionId“), rs.getString(„clicks“));
daten2.add(dat2);
}
…
}
Mein Problem ist nun das aktuelle sowie das darauffolgende Datum/Uhrzeit miteinander zu vergleichen. Mit dat2.getDate() bzw. dat2.getTime() bekomme ich die aktuellen Datensätze, aber wie bekomme ich die Nachfolger? Wie müsste die Schleife dann aussehen? Wie kann ich den Unterschied von einer Stunde feststellen (besonders in dem Fall, wenn es von 23:00:00 auf 00:00:00 übergeht)?
Bin mit meinen Java-Kenntnissen am Ende und bitte um Unterstützung.
Vielen Dank im Voraus
udaff