Precisione del tipo di dati intervallo

La precisione per un tipo di dati intervallo include precisione iniziale, precisione intervallo e precisione secondi.

Il campo iniziale di un intervallo è un valore numerico con segno. Il numero massimo di cifre per il campo iniziale è determinato da una quantità denominata precisione iniziale intervallo, che fa parte della dichiarazione del tipo di dati. Ad esempio, la dichiarazione: INTERVAL HOUR(5) TO MINUTE ha un intervallo di precisione iniziale pari a 5; Il campo HOUR può accettare valori compresi tra -99999 e 99999. La precisione iniziale dell'intervallo è contenuta nel campo SQL_DESC_DATETIME_INTERVAL_PRECISION del record descrittore.

L'elenco di campi di cui è costituito un tipo di dati interval è denominato precisione intervallo. Non è un valore numerico, perché il termine "precisione" potrebbe implicare. Ad esempio, la precisione dell'intervallo del tipo INTERVAL DAY TO SECOND è l'elenco DAY, HOUR, MINUTE, SECOND. Non esiste alcun campo descrittore che contiene questo valore; la precisione dell'intervallo può essere sempre determinata dal tipo di dati interval.

Qualsiasi tipo di dati interval con un campo SECOND ha una precisione di secondi. Numero di cifre decimali consentite nella parte frazionaria del valore dei secondi. Questo comportamento è diverso rispetto ad altri tipi di dati, dove precisione indica il numero di cifre prima del separatore decimale. La precisione dei secondi di un tipo di dati interval è il numero di cifre dopo il separatore decimale. Ad esempio, se la precisione dei secondi è impostata su 6, il numero 123456 nel campo frazione verrà interpretato come .123456 e il numero 1230 verrà interpretato come .001230. Per altri tipi di dati, questa operazione viene definita scalabilità. La precisione dei secondi di intervallo è contenuta nel campo SQL_DESC_PRECISION del descrittore. Se la precisione del componente dei secondi frazionari del valore dell'intervallo SQL è maggiore di quella che può essere mantenuta nella struttura dell'intervallo C, viene definita dal driver se il valore dei secondi frazionari nell'intervallo SQL viene arrotondato o troncato quando viene convertito nella struttura dell'intervallo C.

Quando il campo SQL_DESC_CONCISE_TYPE è impostato su un tipo di dati interval, il campo SQL_DESC_TYPE viene impostato su SQL_INTERVAL e il SQL_DESC_DATETIME_INTERVAL_CODE viene impostato sul codice per il tipo di dati interval. Il campo SQL_DESC_DATETIME_INTERVAL_PRECISION viene impostato automaticamente sulla precisione iniziale dell'intervallo predefinito pari a 2 e il campo SQL_DESC_PRECISION viene impostato automaticamente sulla precisione predefinita dei secondi di intervallo pari a 6. Se uno di questi valori non è appropriato, l'applicazione deve impostare in modo esplicito il campo descrittore tramite una chiamata a SQLSetDescField.