Guten Morgen Hansa,
bei Date, Time, Timestamp verwendest Du genau das, was Du auch brauchst. Im Unterschied zu Delphi (wo TDate letztenendes ein TDateTIme ist) benötigt Date und Time weniger Speicherplatz (32 bit anstelle 64 bit).
Bei Numeric und Decimal sieht es wie folgt aus:
Decimal(precision,scale): "precision" gibt die Anzahl der Stellen an die in der Variable gespeichert werden können, d.h. bei 15 werden max 15 Ziffern gespeichert. Davon werde allerdings die Anzahl der "scale" Ziffern noch abgezogen:
Decimal(15,2) bedeutet also insgesamt 15 Stellen, davon 2 nach dem Komma.
Die Speicherplatzbelegung (in Dialect 3) sieht wie folgt aus:
Quelltext
1: 2: 3: 4:
| Precision: Speicherbelegung: 1 - 4 SmallInt 5 - 9 Integer 10 - 18 Int64 |
Du siehst bei (15,2) brauchst Du den gleichen Speicher wie bei (18,2) da alles in einem Int64 gespeichert und übertragen wird. Somit kannst Du auch die 3 weiteren Stellen eintragen.
In Delphi hat ein Currency folgenden Wertebereich:
[-922,337,203,685,477.5808..922,337,203,685,477.5808] Wenn ich richtig gezählt habe, sind das schon 15 Stellen vor dem Komma. Um diesen Typ richtig auszunutzen wäre in der Datenbank also ein Typ wie folgt zu deklarieren:
TCurrency=NUMERIC(18,3) {oder Decimal(18,3)}
Ich denke bei solchen Typen, die sowieso den Speicherplatz belegen, sollte man schon an den Grenzwert gehen (Außer es ließe sich mit einem Integer arbeiten).
Grüße
Lemmy