Wie werden die Datentypen "money" und "decimal" in SQL Server gespeichert?

8

Ich möchte über die SQL Server-Speicherdatentypen im Speicher informiert werden.

Wie ist der money -Datentyp in SQL Server im Speicher gespeichert? Ich weiß, dass money in 8 Bytes und smallmoney in 4 Bytes gespeichert ist. Aber ich weiß nicht wie?

Zum Beispiel, wenn Sie 123400.93 für das Geld haben, wie ist es in 8 Bytes gespeichert?

Ich habe dieselbe Frage zu den Datentypen decimal und DATE .

Speziell für DATE ist das Format YYYY-MM-DD, aber wie ist es in 3 Bytes gespeichert? Ist es wie hier beschrieben gespeichert: Ссылка oder wird die Anzahl der Tage ab einem bestimmten Tag gespeichert?

    
Nooshin 22.10.2013, 18:43
quelle

3 Antworten

10

Füg hier einfach ein bisschen hinzu ...

Ein einzelnes byte besteht aus 8 bits . A bit kann 2 Werte (0 oder 1) enthalten.

Also 4 Bytes sind 32 Bits (4 x 8). Das bedeutet, dass der numerische Bereich dessen, was gespeichert werden kann, von 0 bis 2 ^ 32 ist, was einen Gesamtbereich von 4.294.967.296 Werten ergibt.

smallmoney ist vorzeichenbehaftet, so dass wir eines der für das Zeichen zu verwendenden Bits löschen, was 2 ^ 31 oder 2.147.483.648 mögliche Werte und das +/- Zeichen zurücklässt.

Nun berücksichtigen wir, dass die letzten 4 Ziffern eines Geldtyps immer hinter dem Dezimalpunkt stehen und wir enden mit einer Bandbreite von -214.748,3648 bis 214.748,3647

Technisch werden Geld- und SmallMoney-Werte gespeichert, indem Bits in einem Wort oder Byte wie alles andere umgedreht werden. Wenn Sie weitere Informationen benötigen, lesen Sie Ссылка

Oder Sie sehen das für den möglichen Wertebereich von Geld und Kleingeld: Ссылка

update
Für den Datentyp DATETIME ist es das gleiche Konzept mit einem kleinen Twist. In MS SQL wird ein DATETIME mit 2 Nummern gespeichert. Die erste ist die Anzahl der Tage seit dem 1.1.1900 und die zweite ist die Anzahl der Ticks seit Mitternacht: Sehen Ссылка und Beim Speichern einer Datetime in SQL-Server (Datetime-Typ ), in welchem ​​Format speichert es es?

    
NotMe 22.10.2013, 19:09
quelle
3
  

Wie sind die Datentypen "money" [...] in SQL Server gespeichert?   Speicher?

Wenn Sie sehen möchten, wie ein MONEY-Wert (8 Byte) gespeichert wird, können Sie den folgenden Script-Schritt / Schritt ausführen:

%Vor%

Hinweis: Ich habe SQL2008R2 verwendet.

    
Bogdan Sahlean 22.10.2013 20:45
quelle
1

Ich denke, dass Sie dieses interessante finden können Performance- / Speichervergleiche: MONEY vs. DECIMAL

  

Die Person, die für MONEY argumentierte, zeigte den von MONEY verwendeten Platz verglichen   zu derselben Information, die in einer DECIMAL (20,4) -Spalte gespeichert ist. Nicht alle   das war überraschenderweise etwas größer. Aber ist das das?   ganze Geschichte? Nein, aus zwei Gründen. Einer ist, dass die Leistung von   Diese Entscheidungen wurden nicht verglichen, und der andere ist DECIMAL (20,4)   keine sehr realistische Anforderung zum Speichern von Währungsdaten. Es sei denn   Sie speichern die Preisinformationen für Luxusyachten oder Flugzeuge   Träger, in diesem Fall können Sie wahrscheinlich die Dezimalstellen fallen lassen   insgesamt und verwenden Sie INT oder BIGINT. Für den Rest von uns eine bessere Wahl   wäre DECIMAL (8,2) oder DECIMAL (10,2).

Überprüfen Sie auch diese verwandte Frage: Sollten Sie in SQL Server die Datentypen MONEY oder DECIMAL (x, y) auswählen?

    
Rahul Tripathi 22.10.2013 18:49
quelle

Tags und Links