Hallo
Was für einen Datentypen muss ich wählen um einen Wert vom Typ uint64 in einer MSSQL Datenbank zu speichern?
Bigint ist 8 Byte (also 64 bit) gross, damit können aber auch negative Zahlen abgebildet werden, es wird also kaum reichen.
Ich tippe auf numeric(20, 0). Wenn ich das richtig verstanden habe beinhaltet dieser Typ 20 Stellen, von denen 0 nach dem Komma sind.
Die höchstmögliche Zahl, die sich mit uint64 darstellen lässt sollte eigentlich 18446744073709551616 sein, hätte also in den 20 Stellen vor dem Komma platz. Allerdings ist dieser Typ grösser als nötig, da er auch negative Zahlen abbilden kann.
Was meint ihr, welcher Typ ist der beste?
Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge
BIGINT 8 Bytes [(M)] [U] [Z] Ganzzahlen von 0 bis 2^64-1 oder von -(2^63) bis (2^63)-1.
Legende
M = maximale Anzahl der gezeigten Stellen
U = UNSIGNED (Zahl ohne Vorzeichen)
Z = Zerofill
Quelle: http://www.schmager.de/mysql.php
... also sollte doch auch BIGINT gehen, wenn du die Option U verwendest. Am besten du probierst es aus. Rechne in deinem Progi 2^64-1, schreibe das Resultat in die Datenbank und dann wird sich zeigen, was beim Lesen daher kommt.
CREATE TABLE `blabla` (
`bla` bigint(20) unsigned,
...
);
Gruss
d-oli
PS: Die höchstmögliche Zahl für BIGINT und uint64 (Matlab oder .NET ..?) ist 2^64-1 = 18'446'744'073'709'551'61 5
Legende
M = maximale Anzahl der gezeigten Stellen
U = UNSIGNED (Zahl ohne Vorzeichen)
Z = Zerofill
Quelle: http://www.schmager.de/mysql.php
... also sollte doch auch BIGINT gehen, wenn du die Option U verwendest. Am besten du probierst es aus. Rechne in deinem Progi 2^64-1, schreibe das Resultat in die Datenbank und dann wird sich zeigen, was beim Lesen daher kommt.
CREATE TABLE `blabla` (
`bla` bigint(20) unsigned,
...
);
Gruss
d-oli
PS: Die höchstmögliche Zahl für BIGINT und uint64 (Matlab oder .NET ..?) ist 2^64-1 = 18'446'744'073'709'551'61 5