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

28. März 2019 13:43

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
Zuletzt geändert von JayCee am 29. März 2019 15:17, insgesamt 1-mal geändert.

Re: Millisekdungen beim speichern von DateTime-Wert in Tabel

28. März 2019 13:54

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

28. März 2019 14:24

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

28. März 2019 17:12

Man könnte den Wert als Text speichern.

Re: Millisekdungen beim speichern von DateTime-Wert in Tabel

29. März 2019 15:16

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