letztes Datum finden..?

Stefke

Benutzer
Beiträge
17
Hallo in die Runde, ich versuche grad das letze (größte) Datum zu finden:
Code:
SELECT MAX(Datum) from feeds;
die Abfrage gibt den 31.12.2023 23:55:34 aus, obwohl die Datenreihe noch weiter läuft.

1732800116523.webp
die Abfrage:
SELECT Datum FROM feeds ORDER BY Datum DESC LIMIT 1;
bringt das gleiche Ergebnis.
1732800617768.webp

die Abfrage:
Code:
SELECT * from feeds WHERE Datum > '31.01.2023';
zeigt alle Ergebnisse bis 11/2024 an, wobei der Februar komplett fehlt.

1732800713705.webp

Wo liegt der Fehler, was läuft falsch?
 
Werbung:
Bei Verwendung Type DATETIME:
1732802804298.webp

Code:
SELECT MIN(Datum) from feeds;
01.01.2024 00:00:37

SELECT MAX(Datum) from feeds;
31.12.2023 23:55:34
... das wiederspricht sich irgendwie....

laut Datatypes In SQLite kann für Datum: TEXT; REAL; INTEGER verwendet werden.
INTEGER hab ich getestet, bring aber den gleiche Mißerfolg.

Ich hab ne Calc-Tabelle nach *.csv exportiert und von da per Pythonscript in die Datenbank importiert.
Code:
import sqlite3
import csv

with open('C:/Users/Stefan/Downloads/2024-11-13_Thinspeak .csv')as csvfile:
  csvReader = csv.reader(csvfile,delimiter = ',')
  result =[]
  for row in csvReader:
    result.append(tuple(row))
  record = (tuple(result))
 
path = "thingspeak_db.db"
verbindung = sqlite3.connect(path)
c = verbindung.cursor()
query = "INSERT INTO feeds VALUES "
for i in record:
    query = query + str(i) + ','
print(f"{query[:-1]}")
c.execute(f"{query[:-1]}")
verbindung.commit()

das Script ist fehlerfrei durchgelaufen....

Danke - Stefan
 
Zuletzt bearbeitet:
irgendwo habe ich mal gelesen, daß in sqlite alles intern text ist.

Code:
postgres=# create table stefke(ts timestamp);
CREATE TABLE
postgres=# insert into stefke values ('31.12.2023 23:00:00'::timestamp);
INSERT 0 1
postgres=# insert into stefke values ('01.01.2024 01:00:00'::timestamp);
INSERT 0 1
postgres=# select * from stefke ;
         ts          
---------------------
 31.12.2023 23:00:00
 01.01.2024 01:00:00
(2 Zeilen)

postgres=# select max(ts) from stefke ;
         max         
---------------------
 01.01.2024 01:00:00
(1 Zeile)

postgres=# alter table stefke alter column ts type text;
ALTER TABLE
postgres=# select max(ts) from stefke ;
         max         
---------------------
 31.12.2023 23:00:00
(1 Zeile)

postgres=#
 
hab Dank für Deine Mühe, aber was soll ich dem entnehmen? Das mit Postgres möglich ist, was mit SQlite nicht gelingt und
ich mit SQlite falsch unterwegs bin?
Es erscheint grad günstiger das Datum in eine fortlaufendes Float umzuwandeln und in diesem Format in die Datenbank einzupflegen?
 
Ja gut, als Hobbybastler sehe ich den Vorteil, dass die Datenbank lokal auf dem Rechner einfach anzulegen ist. Es wird lediglich im 5- min. Takt ein Datensatz mit 10 Feldern gespeichert.
Excel und Libre Office zeigen beim Lesen der derzeit 160000 Datensätzen deutliche Performancprlobleme - und mein Rechner ist bestimmt keine lahme Ente.
Gibt es Alternativen? SQL oder Postgres zu verwenden erscheint mit wie mit dem Caravan zum Einkauf zu fahren :cool:
 
SQL oder Postgres zu verwenden erscheint mit wie mit dem Caravan zum Einkauf zu fahren
Hmm, Du verwendest SQL doch schon als Abfragesprache.

Wenn SQLite für Deine Anforderungen reicht, dann gibt es wenig Gründe was anderes zu nehmen. Man muss sich halt der Fallstricke und Einschränkungen bewusst sein, aber wenn man damit leben kann, dann ist das ja in Ordnung.

(Andererseits ist Postgres jetzt nicht sooo kompliziert... 🥹 )
 
Werbung:
Gibt es Alternativen? SQL oder Postgres zu verwenden erscheint mit wie mit dem Caravan zum Einkauf zu fahren
SQL verwendest Du ja bereits.
Der Fußabdruck von Postgres ist natürlich deutlich größer als der von sqlite, aber die Vorteile sind enorm.

Fußabruck:
Download der Installationsdateien,
wenn Du Windows nutzt ca 300 MB plus Setupdialog, fertig

Mit einer Linux Distribution kann die sicher ausreichende integrierte Version mit einer Zeile (Befehl) installiert werden.
Der benötigte Speicherplatz auf der Platte ist natürlich da, aber wenn stört das heute (zumal Du ja einen leistungsfähigen Rechner hast)

In der Nutzung ist pg sicher bereits effizienter als sqlite.

Vorteile:
pg ist ungleich mächtiger und vor allem sehr standardkonform. Das ist auch gerade für Hobbyisten eine super Sache. Man setzt sich nicht mit unoffensichtlichen Eigenarten und Defiziten eines Nischensystems auseinander, sondern mit dem fachlichen Problem, was man lösen möchte.
Die Logik, ich mach hier eh nur meinen privaten Dreck, dann kann ich auch ein Dreckstool nehmen, zieht da nicht. Schön an der Sache ist ja auch, dass Du einen Highend Caravan bekommst und dafür genausoviel ausgibst wie für dein sqlite Wurfzelt, nämlich nichts.

Die Typproblematik von sqlite ist ja nur eine Kröte, die Du schlucken musst, es warten weitere. Zugegeben, man weiß es vielleicht besser zu schätzen, was man statt dessen bekommen kann, wenn man zuvor durch das ein oder andere Tränental gegangen ist, aber warum soll man sich da wie ein Mönch selbst kasteien? (Dafür gibt es genug andere Gelegenheiten, denen nicht so offensichtlich zu entkommen ist)

Mit postgres lernst Du solide Grundlagen und bekommst viele Extras geschenkt, die nicht sehr nützlich und effizient eingesetzt werden können.

also:

(Andererseits ist Postgres jetzt nicht sooo kompliziert... 🥹 )
 
Zurück
Oben