SELECT auf eine sqlite DB - Datum lesbar darstellen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Krischu
User
Beiträge: 96
Registriert: Dienstag 14. Januar 2014, 09:07

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

--
Grüße
Christoph
bb1898
User
Beiträge: 216
Registriert: Mittwoch 12. Juli 2006, 14:28

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.
Benutzeravatar
sparrow
User
Beiträge: 4525
Registriert: Freitag 17. April 2009, 10:28

@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 "
Antworten