Interval データ型の精度

interval データ型の有効桁数には、間隔の先頭の有効桁数、間隔の有効桁数、秒の有効桁数が含まれます。

間隔の先頭フィールドは符号付き数値です。 先頭フィールドの最大桁数は、データ型宣言の一部である interval leading precision と呼ばれる数量によって決まります。 たとえば、INTERVAL HOUR(5) TO MINUTE の宣言では、間隔の先頭の有効桁数は 5 です。HOUR フィールドは、-99999 から 99999 までの値を受け取ることができます。 前の有効桁数の間隔は、記述子レコードのSQL_DESC_DATETIME_INTERVAL_PRECISIONフィールドに含まれます。

間隔データ型が構成されるフィールドの一覧は、 interval precision と呼ばれます。 "precision" という用語は意味する可能性があるため、数値ではありません。 たとえば、INTERVAL DAY TO SECOND 型の間隔の有効桁数は、DAY、HOUR、MINUTE、SECOND のリストです。 この値を保持する記述子フィールドはありません。間隔の有効桁数は、常に間隔データ型によって決定できます。

SECOND フィールドを持つ任意の間隔データ型には 、秒の有効桁数があります。 これは、秒の値の小数部で使用できる 10 進数の数です。 これは他のデータ型とは異なります。有効桁数は小数点の前の桁数を示します。 間隔データ型の秒の有効桁数は、小数点の後の桁数です。 たとえば、秒の有効桁数が 6 に設定されている場合、分数フィールドの123456数は .123456 として解釈され、数値 1230 は .001230 と解釈されます。 他のデータ型の場合、これはスケールと呼ばれます。 間隔秒の有効桁数は、記述子のSQL_DESC_PRECISION フィールドに含まれます。 SQL 間隔の値の秒の小数部の有効桁数が C 間隔構造体に保持できる値よりも大きい場合、SQL 間隔の秒の小数部の値が C 間隔構造体に変換されたときに丸められるか切り捨てられるかはドライバーによって定義されます。

SQL_DESC_CONCISE_TYPE フィールドが間隔データ型に設定されている場合、SQL_DESC_TYPE フィールドは SQL_INTERVAL に設定され、SQL_DESC_DATETIME_INTERVAL_CODEは interval データ型のコードに設定されます。 SQL_DESC_DATETIME_INTERVAL_PRECISION フィールドは、既定の間隔の先頭の有効桁数 2 に自動的に設定され、SQL_DESC_PRECISION フィールドは自動的に既定の間隔秒の有効桁数 6 に設定されます。 これらの値のいずれかが適切でない場合、アプリケーションは SQLSetDescField の呼び出しを通じて記述子フィールドを明示的に設定する必要があります。