Точность интервального типа данных
Точность для типа данных интервала включает в себя начальную точность интервала, точность интервала и секунды.
Ведущее поле интервала является числовым числом со знаком. Максимальное число цифр для ведущего поля определяется числом, называемым интервалом, ведущей точностью, которая является частью объявления типа данных. Например, объявление: INTERVAL HOUR(5) TO MINUTE имеет интервал начальной точности 5; Поле HOUR может принимать значения от -99999 до 99999 до 99999. Интервал начальной точности содержится в поле SQL_DESC_DATETIME_INTERVAL_PRECISION записи дескриптора.
Список полей, в которые состоит тип данных интервала, называется точностью интервала. Это не числовое значение, так как термин "точность" может означать. Например, точность интервала типа INTERVAL DAY TO SECOND — это список DAY, HOUR, MINUTE, SECOND. Нет поля дескриптора, которое содержит это значение; Точность интервала всегда определяется типом данных интервала.
Любой тип данных интервала, имеющий второе поле, имеет точность секунд. Это число десятичных цифр, разрешенных в дробной части значения секунд. Это отличается от других типов данных, где точность указывает количество цифр до десятичной запятой. Точность секунд типа данных интервала — это число цифр после десятичной запятой. Например, если точность секунд имеет значение 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 — код для типа данных интервала. Поле SQL_DESC_DATETIME_INTERVAL_PRECISION автоматически присваивается интервалу по умолчанию, что составляет 2, а поле SQL_DESC_PRECISION автоматически устанавливается на точность интервала по умолчанию 6 секунд. Если одно из этих значений не подходит, приложение должно явно задать поле дескриптора через вызов SQLSetDescField.