Hallo,
für die Anzeige, wann meine Software das letzte Mal gestartet wurde, schreibe ich das Datum via SQL in eine SQLite Datenbank in ein Textfeld. Dabei wird das Datum so gebildet.
Es kommt beispielsweise
30.03.2017 11:32:27
dabei raus.
Ich lese dann, bei einem Neustart das Datum aus der SQLite Datenbank mit:
dbcursor.execute("SELECT max(timestamp) AS datum FROM `logdaten` where aktion = " + "'System neu gestartet'")
for datensatz in dbcursor:
LastStarttime = str(datensatz[0])
wieder ein um anzuzeigen wann die Software das letzte Mal gestartet wurde.
Funktioniert auch, aber es kommt nicht das neueste Datum, sondern immer der 30.03.2017 11:32:27. Klar das liegt daran, dass "Max" das Datum als Text behandelt und da ist 30.03.2017 11:32:27 natürlich mehr als der 01.07.2017 20:34:12.
Ich müssten also dem Max sagen, dass es sich um ein Datum handelt. Nach einiger Recherche fand ich zwei Ansätze, die beide leider (noch) nicht funktionieren.
Einmal das "AS datum" in der Execute Syntax, wobei ich es auch schon mit "AS date" und "AS DT" versucht habe. Und zum anderen mit der Funktion time.strptime, die angeblich einen Text in ein Datum verwandelt.
funktioniert auch, aber in dem Execute, also:
dbcursor.execute("SELECT max(time.strptime(timestamp,'%d.%m.%Y %H:%M:%S')) AS DT FROM `logdaten` where aktion = " + "'System neu gestartet'")
for datensatz in dbcursor:
LastStarttime = str(datensatz[0])
führt es zu einer Fehlermeldung:
Traceback (most recent call last):
File "/home/pi/tormann/tormann_neu.py", line 1074, in <module>
dbcursor.execute("SELECT max(time.strptime(timestamp,'%d.%m.%Y %H:%M:%S')) AS DT FROM `logdaten` where aktion = " + "'System neu gestartet'")
OperationalError: near "(": syntax error
Ich steh auffem Schlauch.. :s
Hat jemand eine Idee wo mein Fehler liegt oder einen besseren Ansatz das zu lösen?
Vielen Dank im Voraus
Ralf