Seite 1 von 1

[gelöst] Millisekdungen beim speichern von DateTime in Table

Verfasst: 28. März 2019 13:43
von JayCee
Hallo zusammen,

wir arbeiten mit NAV 2009 R2 und dem Classic-Client.

Wenn ich eine Variable vom Typ DateTime in ein Tabellenfeld vom Typ DateTime schreibe und anschließend das Feld aus der Tabelle wieder auslese, dann gibt es manchmal eine Differenz in den Millisekunden.

Ich speichere zum Beispiel den DateTime-Wert "28.03.2019 12:35:01,982" aus einer Variable in der Tabelle. In der Tabelle steht anschließend aber "28.03.2019 12:35:01,983".
Das Problem tritt auch nicht immer auf. Nur manchmal. Kennt jemand eine Lösung dafür?

Hier mal meinen Beispiel:
Die erste Message gibt den richtigen Wert aus. Die zweite Message gibt manchmal den Wert mit einer Millisekunde Unterschied aus.

Code:
dateTime := CURRENTDATETIME();

testTab.RESET;
IF testTab.FINDLAST THEN BEGIN

  testTab.DateTimeShow := dateTime;
  testTab.MODIFY;

  MESSAGE(FORMAT(dateTime,0,'<Day,2>.<Month,2>.<Year4> <Hours24,2>:<Minutes,2>:<Seconds,2><Second dec>'));



  testTab2.RESET;
  IF testTab2.FINDLAST THEN;

  MESSAGE(FORMAT(testTab2.DateTimeShow,0,'<Day,2>.<Month,2>.<Year4> <Hours24,2>:<Minutes,2>:<Seconds,2><Second dec>'));

END;


Vielen Dank schonmal für eure Hilfe!

Grüße Jens

Re: Millisekdungen beim speichern von DateTime-Wert in Tabel

Verfasst: 28. März 2019 13:54
von fiddi
Hallo,

es soll zwar nicht sein, aber evtl. passiert das durch das Vor- und Zurückrechnen der Zeit vom MEZ nach UTC (unter dem es in der Datenbank steht) und wieder zurück.

Mann müsste das mal mit einer DB oder Client testen, der/die komplett auf UTC läuft (NAS) ob das dort auch auftritt.

Generell wäre das ein blödes Problem.

Gruß Fiddi

Re: Millisekdungen beim speichern von DateTime-Wert in Tabel

Verfasst: 28. März 2019 14:24
von SilverX
SQL Server stores DATETIME with a precision of 3.33 milliseconds (0. 00333 seconds). Similarly, SMALLDATETIME is rounded to the nearest minute.

SQL Server speichert DATETIME mit einer Genauigkeit von 3,33 Millisekunden (0. 00333 Sekunden). Ebenso wird die SMALLDATETIME auf die nächste Minute gerundet.

Daran kann man nichts ändern, außer den Datentyp zu ändern und das kann man als NAV-Entwickler leider nicht :)

Re: Millisekdungen beim speichern von DateTime-Wert in Tabel

Verfasst: 28. März 2019 17:12
von m_schneider
Man könnte den Wert als Text speichern.

Re: Millisekdungen beim speichern von DateTime-Wert in Tabel

Verfasst: 29. März 2019 15:16
von JayCee
Vielen Dank für eure Hilfe!
Da kann man dann leider nichts machen! Ich denke ich werden den Wert wirklich als Text speichern.
Ich denke damit ist das Thema "Gelöst".

grüße Jens