Seite 1 von 1

SELECT auf eine sqlite DB - Datum lesbar darstellen

Verfasst: Samstag 8. Februar 2025, 18:16
von Krischu
Guten Tag zusammen. Ich wende mich hier an das Forum, weil ich hoffe, hier jemand SQLite-Kundigen zu finden. Es betrifft zwar nicht direkt Python, aber die Frage könnte genauso in Python vorkommen.

Ich durchforste meine Firefox History mit einem Shell-Skript, das gerade in den Anfängen steht.

Code: Alles auswählen

sqlite3 ./places.sqlite  "SELECT url,last_visit_date   FROM moz_places WHERE url LIKE '%somesite.net%' AND last_visit_date BETWEEN strftime('%s','2021-01-01')*1000000 AND strftime('%s','2021-12-31')*1000000 "
Und das Ergebnis ist:

Code: Alles auswählen


https://www.somesite.net/topic/?goto=6750593#6750593|*1625899253728048*
https://www.somesite.net/topic/?reply_to=6750954#postform|*1625899273393147*
https://www.somesite.net/topic/?goto=6752640#6752640|*1640692824177445*
...

Die mit '*' markierten Werte sind die Datumsergebnisse, die aber im unix dateformat (microsekunden seit dem Unix Urknall)
angezeigt werden. Ich bin nicht so firm in SQL, aber wie kann ich das SELECT statement modifizieren, daß last_visit_date in schön lesbarer Form dargestellt wird?


Anm.: (um Bezug zu Python herzustellen)

Code: Alles auswählen

import datetime

timestamp = 1640692824177445/1000000

value = datetime.datetime.fromtimestamp(timestamp)
print(f"{value:%Y-%m-%d %H:%M:%S}")
2021-12-28 13:00:24


Re: SELECT auf eine sqlite DB - Datum lesbar darstellen

Verfasst: Samstag 8. Februar 2025, 20:31
von bb1898
Es gibt eine Seite in der SQLITE-Dokumentation, die das Nötige erklärt:
https://sqlite.org/lang_datefunc.html
Der Kern der Sache scheint mir für Dein Problem zu sein, dass Du den Format-String "%s" im strftime-Aufruf durch etwas Passenderes ersetzen musst. "%s" ist nämlich genau dazu da, die Zeit in Sekunden seit dem Unix Urknall anzugeben. Da gibt es eine Menge Möglichkeiten. Neben anderen Format-Strings auch noch ein paar Funktionen, die von vornherein ein anderes Format benutzen, z.B. datetime(...).

Die SQLITE-Dokumentation scheint mir überhaupt hilfreich, und da SQLITE ja immer mal wieder von Brauch und Sitte anderer SQL-Datenbanken abweicht, andererseits aber bei Python gleich dabei und für nicht riesige Projekte und zum Ausprobieren praktisch ist, ist es keine schlechte Idee, sich in ihr zurechtzufinden.

Re: SELECT auf eine sqlite DB - Datum lesbar darstellen

Verfasst: Samstag 8. Februar 2025, 20:46
von sparrow
@Krischu: Das müsste funktionieren:

Code: Alles auswählen

sqlite3 ./places.sqlite  "SELECT url, DATETIME(last_visit_date, 'unixepoch') FROM moz_places WHERE url LIKE '%somesite.net%' AND last_visit_date BETWEEN strftime('%s','2021-01-01')*1000000 AND strftime('%s','2021-12-31')*1000000 "