Partager via


Précision des types de données d’intervalle

La précision d’un type de données d’intervalle inclut la précision de début d’intervalle, la précision d’intervalle et la précision des secondes.

Le champ de début d’un intervalle est un numérique signé. Le nombre maximal de chiffres pour le champ de début est déterminé par une quantité appelée précision de début d’intervalle, qui fait partie de la déclaration de type de données. Par exemple, la déclaration : INTERVAL HOUR(5) TO MINUTE a une précision d’intervalle de début de 5 ; le champ HOUR peut prendre des valeurs comprises entre -9999 et 99999. La précision de début d’intervalle est contenue dans le champ SQL_DESC_DATETIME_INTERVAL_PRECISION de l’enregistrement de descripteur.

La liste des champs dont un type de données d’intervalle est constitué est appelée précision d’intervalle. Il ne s’agit pas d’une valeur numérique, comme le terme « précision » peut l’impliquer. Par exemple, la précision d’intervalle du type INTERVAL DAY TO SECOND est la liste DAY, HOUR, MINUTE, SECOND. Il n’existe aucun champ de descripteur qui contient cette valeur ; la précision de l’intervalle peut toujours être déterminée par le type de données d’intervalle.

Tout type de données d’intervalle qui a un champ SECOND a une précision en secondes. Il s’agit du nombre de chiffres décimaux autorisés dans la partie fractionnaire de la valeur de secondes. Cela diffère de celui des autres types de données, où la précision indique le nombre de chiffres avant la virgule décimale. La précision en secondes d’un type de données d’intervalle est le nombre de chiffres après la virgule décimale. Par exemple, si la précision des secondes est définie sur 6, le nombre 123456 dans le champ fraction est interprété comme .123456 et le nombre 1230 est interprété comme .001230. Pour d’autres types de données, il s’agit de la mise à l’échelle. La précision des secondes d’intervalle est contenue dans le champ SQL_DESC_PRECISION du descripteur. Si la précision du composant fractionnaire secondes de la valeur d’intervalle SQL est supérieure à ce qui peut être conservé dans la structure d’intervalle C, le pilote définit si la valeur fractionnaire seconde dans l’intervalle SQL est arrondie ou tronquée lorsqu’elle est convertie en structure d’intervalle C.

Lorsque le champ SQL_DESC_CONCISE_TYPE est défini sur un type de données d’intervalle, le champ SQL_DESC_TYPE est défini sur SQL_INTERVAL et le SQL_DESC_DATETIME_INTERVAL_CODE est défini sur le code pour le type de données d’intervalle. Le champ SQL_DESC_DATETIME_INTERVAL_PRECISION est automatiquement défini sur la précision d’intervalle par défaut de début de 2, et le champ SQL_DESC_PRECISION est automatiquement défini sur la précision d’intervalle secondes par défaut de 6. Si l’une de ces valeurs n’est pas appropriée, l’application doit définir explicitement le champ de descripteur via un appel à SQLSetDescField.