Share via


Genauigkeit des Datentyps „Intervall“

Die Genauigkeit für einen Intervalldatentyp umfasst Intervallführungsgenauigkeit, Intervallgenauigkeit und Sekundengenauigkeit.

Das führende Feld eines Intervalls ist ein numerisches Zeichenfeld. Die maximale Anzahl von Ziffern für das führende Feld wird durch eine Menge namens Intervallführungsgenauigkeit bestimmt, die Teil der Datentypdeklaration ist. Beispielsweise weist die Deklaration INTERVAL HOUR(5) TO MINUTE eine Intervallführungsgenauigkeit von 5 auf; das HOUR-Feld kann Werte von -99999 bis 99999 annehmen. Die Intervallführungsgenauigkeit ist im SQL_DESC_DATETIME_INTERVAL_PRECISION Feld des Deskriptordatensatzes enthalten.

Die Liste der Felder, aus denen ein Intervalldatentyp besteht, wird als Intervallgenauigkeit bezeichnet. Es handelt sich nicht um einen numerischen Wert, wie der Begriff "Genauigkeit" vermuten lässt. Beispielsweise ist die Intervallgenauigkeit des Typs INTERVAL DAY TO SECOND die Liste DAY, HOUR, MINUTE, SECOND. Es gibt kein Deskriptorfeld, das diesen Wert enthält. die Intervallgenauigkeit kann immer durch den Intervalldatentyp bestimmt werden.

Jeder Intervalldatentyp, der über ein SECOND-Feld verfügt, hat eine Sekundengenauigkeit. Dies ist die Anzahl der dezimalen Ziffern, die im Bruchteil des Sekundenwerts zulässig sind. Dies unterscheidet sich von anderen Datentypen, bei denen die Genauigkeit die Anzahl der Ziffern vor dem Dezimalpunkt angibt. Die Sekundengenauigkeit eines Intervalldatentyps ist die Anzahl der Ziffern nach dem Dezimalpunkt. Wenn die Sekundengenauigkeit beispielsweise auf 6 festgelegt ist, wird die Zahl 123456 im Bruchfeld als .123456 interpretiert und die Zahl 1230 als .001230 interpretiert. Bei anderen Datentypen wird dies als Skalierung bezeichnet. Die Genauigkeit von Intervallsekunden ist im SQL_DESC_PRECISION Feld des Deskriptors enthalten. Wenn die Genauigkeit der Sekundenbruchteilkomponente des SQL-Intervallwerts größer ist als das, was in der C-Intervallstruktur gehalten werden kann, wird vom Treiber definiert, ob der Sekundenbruchteilwert im SQL-Intervall gerundet oder abgeschnitten wird, wenn er in die C-Intervallstruktur konvertiert wird.

Wenn das Feld SQL_DESC_CONCISE_TYPE auf einen Intervalldatentyp festgelegt ist, wird das feld SQL_DESC_TYPE auf SQL_INTERVAL und das SQL_DESC_DATETIME_INTERVAL_CODE auf den Code für den Intervalldatentyp festgelegt. Das feld SQL_DESC_DATETIME_INTERVAL_PRECISION wird automatisch auf die Standardintervallführungsgenauigkeit 2 festgelegt, und das SQL_DESC_PRECISION Feld wird automatisch auf die Standardintervall-Sekundengenauigkeit von 6 festgelegt. Wenn einer dieser Werte nicht geeignet ist, sollte die Anwendung das Deskriptorfeld explizit über einen Aufruf von SQLSetDescField festlegen.