Falsche Datumsanzeige in den DB-Komponenten bei SQLite3

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

Falsche Datumsanzeige in den DB-Komponenten bei SQLite3

Beitragvon linubux » 3. Mär 2017, 23:59 Falsche Datumsanzeige in den DB-Komponenten bei SQLite3

Hallo zusammen,

ich habe ein Problem das ich mir nicht erklären und nach intensiver Google-Suche auch immer noch nicht lösen kann.

Ich verwende in Lazarus (neuste Version) eine SQLite3-Datenbank die ich mit dem SQLiteDatabaseBrowser erstellt habe. Hier kommen Datumsfelder vor die mit "DATE" definiert sind. Beim eingeben von neuen Datensätzen im SQLDatabaseBrowser wird das jeweilige Datum richtig (also z.B. 03.03.2017) dargestellt.

Läuft mein Programm und ich durchlaufe die einzelnen Datensätze wird mir in den Komponente DBText, DBEdit und auch im DBGrid immer das Datum 30.12.1899 angezeigt.

Hier ist mir völlig unklar aus welchem Grund.

Kann mir jemand einen entscheidenden Tip geben?
linubux
 
Beiträge: 2
Registriert: 4. Jul 2015, 06:47

Beitragvon Michl » 5. Mär 2017, 13:02 Re: Falsche Datumsanzeige in den DB-Komponenten bei SQLite3

Kannst du ein Minimalbsp zusammenstellen und hier als Zip hochladen (nur *.lfm, *.lpr, *.lpi, *.pas)?
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2320
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon af0815 » 5. Mär 2017, 15:04 Re: Falsche Datumsanzeige in den DB-Komponenten bei SQLite3

Keine Details :-) Welches BS ?

SQLite kann das Datum in 3 Formaten abspeichern.
Code: Alles auswählen
TEXT as ISO8601 strings ("YYYY-MM-DD HH:MM:SS.SSS").
REAL as Julian day numbers, the number of days since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.
 

Jetzt ist es einmal wichtig zu wissen, wie ist es bei dir wirklich abgelegt. Dann kann man das Datum so mit den Funktionen

https://www.sqlite.org/lang_datefunc.html

umformen, das es von den DB-Komponenten akzeptiert wird. EInfaches ist es meistens, die DB auch in Lazarus erstellen zu lassen, dann sind die Datumsfelder gleich so wie die Komponeneten damit arbeiten können.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3605
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon linubux » 9. Mär 2017, 23:59 Re: Falsche Datumsanzeige in den DB-Komponenten bei SQLite3

Hallo,

erst einmal Entschuldigung das ich jetzt erst antworte.
Danke für eure Hinweise und Hilfeversuche. Um die Frage nach dem BS zu Anfang zu beantworten: Es handelt sich um Windows 10 und die neuste Lazarusversion.

Ich hatte meine Datenbank mit SQLDatabaseBrowser erstellt und den Datumsfeldern "DATE" zugewiesen. Ein ändern auf "DATETIME" oder "TEXT" hatte immer den gleichen Effekt. Ein erstellen der SQL-Datenbank innerhalb von Lazarus brachte ebenfalls das Ergebnis "30.12.1899". Für mich irgendwie nicht begreifbar. Als "Notlösung" habe ich nun den Feldtyp "VARCHAR(10)" für das Datumsfeld benutzt. Somit werden die Daten dann auch logischerweise korrekt angezeigt. Sollte ich allerdings mit dem Datum rechnen wollen (Zeitspanne etc.) werde ich die Strings wohl oder über in einen richtigen Datumswert "umrechnen" müssen.

Naja, mein Lösungsansatz funktioniert vorerst.

Danke für die Hilfe

Gruß
linubux
linubux
 
Beiträge: 2
Registriert: 4. Jul 2015, 06:47

Beitragvon af0815 » 10. Mär 2017, 09:02 Re: Falsche Datumsanzeige in den DB-Komponenten bei SQLite3

Ich verwende sowas bei sqlite, siehe
Code: Alles auswählen
SELECT strftime('%Y-%m-%d',[DatumZeit]) AS datum ,.....


Orientierung ist für mich immer noch ISO8601 strings ("YYYY-MM-DD HH:MM:SS.SSS")
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3605
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

porpoises-institution
accuracy-worried