Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Problem mit Timestamp Millisekunden (https://www.delphipraxis.net/195376-problem-mit-timestamp-millisekunden.html)

MES 23. Feb 2018 09:40

Datenbank: MariaDB • Version: 10.1.13 • Zugriff über: Firedac

Problem mit Timestamp Millisekunden
 
Wir haben in einer Tabelle ein Feld vom Typ Timestamp in der auch Millisekunden zweistellig gespeichert werden (also Länge 2).
Wenn wir nun aus Delphi über Firedac diese Tabelle öffnen wollen (select ...) führt es zu einem Fehler weil die Millisekunden nicht erwartet werden.
Fehler: "Wert in [00 ??] ist ausserhalb des gültigen Bereichs des Datentyps [Cardinal]"

Engine ist InnoDB.

Was machen wir falsch?

Danke im Vorraus für eure Hilfe.

MES 23. Feb 2018 09:53

AW: Problem mit Timestamp Millisekunden
 
Auch wenn auf der Datenbank Timestamp durch DateTime ersetzt wird und Millisekunden abspeichert werden so führt das beim Öffnen über Firedac zum gleichen Fehler.
Werden keine Millisekunden gespeichert ist alles ok.

EWeiss 23. Feb 2018 10:42

AW: Problem mit Timestamp Millisekunden
 
Keine Ahnung ob es jetzt daran liegt vielleicht speicherst du die Ms falsch ab?

00.00 <> 00,00 ?
prüfe das mal bitte.

gruss

Ghostwalker 23. Feb 2018 10:44

AW: Problem mit Timestamp Millisekunden
 
Also...wenn ich mir DAS so anschau, kannst du in der DB in einem Timestamp-Feld keine Millisekunden speichern. Das ist ein Unixtimestamp (32-Bit Integer).

EWeiss 23. Feb 2018 10:47

AW: Problem mit Timestamp Millisekunden
 
Zitat:

Zitat von Ghostwalker (Beitrag 1394491)
Also...wenn ich mir DAS so anschau, kannst du in der DB in einem Timestamp-Feld keine Millisekunden speichern. Das ist ein Unixtimestamp (32-Bit Integer).

Und man kann ihn nicht als String hinterlegen ? (wobei mache nicht viel mit Datenbank unter Delphi (VB6 schon einiges gemacht).
Deshalb mein vorheriger Post.

gruss

MES 23. Feb 2018 14:21

AW: Problem mit Timestamp Millisekunden
 
Es ist keine Sache der Datenbank, die kann es:
A timestamp in the format YYYY-MM-DD HH:MM:SS.
Microseconds with a range of 0 to 6 can also be specified. If not specified, 0 is used.


Ich kann das auch wunderbar über Heidisql abfragen/anzeigen.
Nur der Versuch die Tabelle für eine Querry über Firedac zu öffnen scheitert.
Vielleicht kann das jemand nachvollziehen?

Delphi.Narium 23. Feb 2018 15:16

AW: Problem mit Timestamp Millisekunden
 
Quelltext der fraglichen Stelle?

Oder lieber :glaskugel:

Oder Createstatement der Tabelle bzw. den Teil, in dem die Timestamp-Spalte definiert ist.

Naja, die Fehlermeldung lässt darauf schließen, dass da irgendwo ein falscher Type genutzt wird.

Cardinal kann nunmal keine Nachkommastellen.

Und wenn FireDac Timestamp als Sekunden seit 1.1.1970 interpretiert, dann ist das so auch richtig.

Date and Time Macro Functions (FireDAC)
Data Type Mapping (FireDAC)

MES 23. Feb 2018 16:13

AW: Problem mit Timestamp Millisekunden
 
Auszug aus dem CREATE Table Statement der Tabelle:

CREATE TABLE `regal` (
...,
`WANNAEND` TIMESTAMP(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(2),
...)

Den Feldtypen lassen wir von FireDAC selbst automatisch ermitteln. Dieser ist nunmal, ob mit oder ohne Precision beim timestamp-Feld, stets "TSQLTimeStampField"
In diesem haben wir nichts gefunden, womit man die Anzahl der "Fractions" (Millisekunden) festlegen könnte.
Wenn man den Feldtyp selbst wählt, bleibt einem auch kaum keine Alternative.

Delphi.Narium 23. Feb 2018 16:30

AW: Problem mit Timestamp Millisekunden
 
Das Data Type-Mapping hilft da auch nicht weiter?

Stevie 23. Feb 2018 16:41

AW: Problem mit Timestamp Millisekunden
 
Mit ner MySQL 5.7.17 funktioniert es auf jeden Fall ohne irgendwelche Anpassungen, da steht der richtige Wert in Fractions - scheint also nen MariaDB spezifisches Problem zu sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz