AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Problem mit Timestamp Millisekunden
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Timestamp Millisekunden

Ein Thema von MES · begonnen am 23. Feb 2018 · letzter Beitrag vom 28. Feb 2018
Antwort Antwort
Seite 1 von 2  1 2      
MES

Registriert seit: 23. Dez 2008
Ort: PLZ 73
39 Beiträge
 
#1

Problem mit Timestamp Millisekunden

  Alt 23. Feb 2018, 10:40
Datenbank: MariaDB • Version: 10.1.13 • Zugriff über: Firedac
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.
LG

MES
  Mit Zitat antworten Zitat
MES

Registriert seit: 23. Dez 2008
Ort: PLZ 73
39 Beiträge
 
#2

AW: Problem mit Timestamp Millisekunden

  Alt 23. Feb 2018, 10:53
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.
LG

MES
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Problem mit Timestamp Millisekunden

  Alt 23. Feb 2018, 11:42
Keine Ahnung ob es jetzt daran liegt vielleicht speicherst du die Ms falsch ab?

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

gruss
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Problem mit Timestamp Millisekunden

  Alt 23. Feb 2018, 11:44
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).
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Problem mit Timestamp Millisekunden

  Alt 23. Feb 2018, 11:47
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
  Mit Zitat antworten Zitat
MES

Registriert seit: 23. Dez 2008
Ort: PLZ 73
39 Beiträge
 
#6

AW: Problem mit Timestamp Millisekunden

  Alt 23. Feb 2018, 15:21
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?
LG

MES
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#7

AW: Problem mit Timestamp Millisekunden

  Alt 23. Feb 2018, 16:16
Quelltext der fraglichen Stelle?

Oder lieber

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)

Geändert von Delphi.Narium (23. Feb 2018 um 17:28 Uhr) Grund: Links korrigiert
  Mit Zitat antworten Zitat
MES

Registriert seit: 23. Dez 2008
Ort: PLZ 73
39 Beiträge
 
#8

AW: Problem mit Timestamp Millisekunden

  Alt 23. Feb 2018, 17:13
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.
LG

MES
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#9

AW: Problem mit Timestamp Millisekunden

  Alt 23. Feb 2018, 17:30
Das Data Type-Mapping hilft da auch nicht weiter?
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Problem mit Timestamp Millisekunden

  Alt 23. Feb 2018, 17:41
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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 Uhr.
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