The Schema collections return metadata for the Advanced SQL Engine objects. The notable metadata columns for the Interval Hour data type are:
Column Name | Description |
---|---|
COLUMN_TYPE or DATA_TYPE |
Set to INTERVAL HOUR. |
FORMAT | Format assigned to the SQL Engine object. |
PROVIDERDBTYPE | It is set to TdType.IntervalHour. |
INTERVAL_PRECISION | The maximum number of digits for the Hour component. |
The TdDataReader.SchemaTable returns result set metadata. The notable metadata columns for the Interval Hour data type are:
Column Name | Description |
---|---|
NumericPrecision | The maximum number of digits for the Hour component. |
DataType | System.Type object for the System.TimeSpan structure. |
ProviderType | Set to TdType.IntervalHour. |
Format | Format assigned to the SQL Engine object. |
ProviderSpecificDataType | System.Type object for the TdIntervalHour structure. |
The following example shows how to configure an Interval Hour parameter using DbType type declaration and a Base Class Library (BCL) value. The TdParameter.Precision property reflects the maximum number of digits for the Hour component and it must be equal to or less than the target SQL Engine object (i.e. Column, Expression, Stored Procedure Parameters and etc.) declaration. The range of values are from One to Four.
![]() |
---|
The Data Provider will throw an exception if the TotalHours property of the System.TimeSpan value is greater than 9,999 Hours. |
![]() |
---|
The Data Provider truncates the Minutes, Seconds and Milliseconds components of the System.TimeSpan vlaue. |
C# |
Copy Code |
---|---|
TdParameter deliveryInterval = new TdParameter(); deliveryInterval.ParameterName = "deliveryHours"; deliveryInterval.DbType = DbType.Object; // Maximum number of digits for Hours deliveryInterval.Precision = 2; deliveryInterval.Value = new System.TimeSpan(0, 78, 0, 0); |
The following example shows how to configure an Interval Hour parameter using TdType type declaration and a Provider Specific value. it is recommend to always set TdParameter.Precision property, however the Data Provider will utilize TdIntervalHour.Precision property value when the TdParameter.Precision property is set to zero. .NET Applications can retrieve metadata from the Schema Collections or the Schema Table and apply the metadata to the TdParameter object.
![]() |
---|
The Data Provider will throw an exception if the Interval Value is greater than the maximum permissible value specified by the TdParameter.Precision property. |
C# |
Copy Code |
---|---|
TdParameter deliveryInterval = new TdParameter(); deliveryInterval.ParameterName = "deliveryHours"; deliveryInterval.TdType = TdType.IntervalHour; // Maximum number of digits for Hours component deliveryInterval.Precision = 2; deliveryInterval.ProviderSpecificValue = new TdIntervalHour(78); |
The syntax for the Interval Hour Literal is INTERVALsign'dddd'HOUR. Interval Hour literals consist of the word Interval followed by optional negative sign, character string literal representation of the number of Hours (up to 4 digits) and the word HOUR.
![]() |
---|
We recommend to always use Parameters in order to take advantage of the SQL Engine's Request Cache. |
The following example shows 10 Hour represented as Interval Hour Literal in the Command Text.
C# |
Copy Code |
---|---|
using (TdConnection cn = new TdConnection("data source=x;UserId=y;Password=z;")) { cn.Open(); TdCommand cmd = cn.CreateCommand(); // Delivery exceeding 10 hours. cmd.CommandText = "SELECT Id, orderTS from Order where (CURRENT_DATE - OrderTS) > INTERVAL'10'HOUR "; using (TdDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { Console.WriteLine("Id={0}", reader.GetInt64(0).ToString()); } } } } |
The following methods and properties return the column or parameter value as a System.TimeSpan structure.
The following methods and properties return the column or parameter value as a TdIntervalHour structure.
C# |
Copy Code |
---|---|
using (TdConnection cn = new TdConnection("data source=DS1;UserId=Joe;Password=XY;")) { cn.Open(); TdCommand cmd = cn.CreateCommand(); cmd.CommandText = "SELECT Id, orderTS, deliveryHours from Order where deliveryHours > ?"; cmd.Parameters.Add("deliveryHours", TdType.IntervalHour); cmd.Parameters[0].Precison = 2; cmd.Parameters[0].Value = new TimeSpan(0, 10, 0, 0); using (TdDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { Console.WriteLine("[TimeSpan] Delivery Hours = {0}", reader.GetValue(2).ToString()); Console.WriteLine("[TdIntervalHour] Delivery Hours = {0}", reader.GetTdIntervalHour(2).ToString()); } } } } /* Output: [TimeSpan] Delivery Hours = 12:00:00.0000000 [TdIntervalHour] Delivery Hours = 12 */ |
Accessor Methods for Retrieving Data
Configuring Parameters and Parameter Data Types