## 13.15 IntervalDS Class

The IntervalDS class encapsulates time interval calculations in terms of days, hours, minutes, seconds, and fractional seconds. Leading field precision is determined by number of decimal digits in day input. Fraction second precision is determined by number of fraction digits on input.

Table 13-19 Fields of IntervalDS Class

Field Type Description

`day`

`int`

Day component. Valid values are `-10^9` through `10^9`.

`hour`

`int`

Hour component. Valid values are `-23` through `23`.

`minute`

`int`

Minute component. Valid values are `-59` through `59`.

`second`

`int`

Second component. Valid values are `-59` through `59`.

`fs`

`int`

Fractional second component. Constructs a `NULL` `IntervalDS` object. A `NULL` `intervalDS` can be initialized by assignment or calling `fromText` method. Methods that can be called on `NULL` `intervalDS` objects are setName() and isNull().

Example 13-6 How to Use an Empty IntervalDS Object through Direct Assignment

This example demonstrates how the default constructor creates a `NULL` value, and how you can assign a non `NULL` value to a day-second interval and then perform operations on it.

```Environment *env = Environment::createEnvironment();

// Create a NULL day-second interval
IntervalDS ds;
if(ds.isNull())
cout << "\n ds is null";

// Assign a non-NULL value to ds
IntervalDS anotherDS(env, "10 20:14:10.2");
ds = anotherDS;

// Now all operations on IntervalDS are valid
int DAY = ds.getDay();
```

Example 13-7 How to Use an Empty IntervalDS Object Through *Text() Methods

This example demonstrates how to create a `NULL` day-second interval, initialize the day-second interval by using the `fromText()` method, add to the day-second interval by using the += operator, multiply by using the * operator, compare 2 day-second intervals, and convert a day-second interval to a string by using the `toText` method:

```Environment *env = Environment::createEnvironment();

// Create a null day-second interval
IntervalDS ds1

// Initialize a null day-second interval by using the fromText method
ds1.fromText("20 10:20:30.9","",env);

ds1 += addWith;    //call += operator

IntervalDS mulDs1=ds1 * Number(env,10);
//call * operator
if(ds1==mulDs1)    //call == operator
.
.
string strds=ds1.toText(2,4);                       //2 is leading field precision
//4 is the fractional field precision
```

Table 13-20 Summary of IntervalDS Methods

Method Summary

IntervalDS()

`IntervalDS` class constructor.

fromText()

Returns an `IntervalDS` converted from a `string`.

fromUText()

Returns an `IntervalDS` converted from a `UString`.

getDay()

Returns day interval values.

getFracSec()

Returns fractional second interval values.

getFracSec()

Returns hour interval values.

getMinute()

Returns minute interval values.

getSecond()

Returns second interval values.

isNull()

Returns `true` if `IntervalDS` is `NULL`, `false` otherwise.

operator*()

Returns the product of two `IntervalDS` values.

operator*=()

Multiplication assignment.

operator=()

Simple assignment.

operator==()

Checks if `a` and `b` are equal.

operator!=()

Checks if `a` and `b` are not equal.

operator/()

Returns an `IntervalDS` with value `(``a`` / ``b``)`.

operator/=()

Division assignment.

operator>()

Checks if `a` is greater than `b`

operator>=()

Checks if `a` is greater than or equal to `b`.

operator<()

Checks if `a` is less than `b`.

operator<=()

Checks if `a` is less than or equal to `b`.

operator-()

Returns an `IntervalDS` with value (`a -`` ``b`).

operator-=()

Subtraction assignment.

operator+()

Returns the sum of two `IntervalDS` values.

operator+=()

set()

Sets day-second interval.

setNull()

Sets day-second interval to `NULL`.

toText()

Converts to a `string` representation for the interval.

toUText()

Converts to a `UString` representation for the interval.

### 13.15.1 IntervalDS()

`IntervalDS` class constructor.

Syntax Description
`IntervalDS();`

Constructs a `NULL` `IntervalDS` object. A `NULL` `IntervalDS `can be initialized by assignment or calling fromText() method. Methods that can be called on `NULL` `IntervalDS` objects are setName() and isNull().

```IntervalDS(
const Environment *env,
int day = 0,
int hour = 0,
int minute = 0,
int second = 0,
int fs = 0);```

Constructs an `IntervalDS` object within a specified `Environment`.

```IntervalDS(
const IntervalDS &src);```

Constructs an` IntervalYM` object from `src`.

Parameter Description
`env`

The `Environment`.

`day`

The `day` field of `IntervalDS`.

`hour`

The `hour` field of `IntervalDS`.

`minute`

The `minute` field of `IntervalDS`.

`second`

The second field of `IntervalDS`.

`fs`

The `fs` field of `IntervalDS`.

`src`

The source that the `IntervalDS` object is copied from.

### 13.15.2 fromText()

Creates the interval from the string specified. The string is converted using the `nls` parameters associated with the relevant environment. The `nls` parameters are picked up from `env`. If `env` is `NULL`, the `nls` parameters are picked up from the environment associated with the instance, if any.

Syntax

```void fromText(
const string &inpstr,
const string &nlsParam = "",
const Environment *env = NULL);```
Parameter Description
`inpstr`

Input string representing a day second interval of the form 'days hours:minutes:seconds', for example, '10 20:14:10.2'

`nlsParam`

The `NLS` parameter string. If `nlsParam` is specified, this determines the NLS parameters to be used for the conversion. If `nlsParam` is not specified, the NLS parameters are picked up from `envp`.

`env`

Environment whose NLS parameters are used.

### 13.15.3 fromUText()

Creates the interval from the `UString` specified.

Syntax

```void fromUText(
const UString &inpstr,
const Environment *env=NULL );
```
Parameter Description
`inpstr`

Input `UString` representing a day second interval of the form 'days hours:minutes:seconds', for example, '10 20:14:10.2'

`env`

The `Environment`.

### 13.15.4 getDay()

Returns the day component of the interval.

Syntax

```int getDay() const;
```

### 13.15.5 getFracSec()

Returns the fractional second component of the interval.

Syntax

```int getFracSec() const;
```

### 13.15.6 getHour()

Returns the hour component of the interval.

Syntax

```int getHour() const;
```

### 13.15.7 getMinute()

Returns the minute component of this interval.

Syntax

```int getMinute() const;
```

### 13.15.8 getSecond()

Returns the seconds component of this interval.

Syntax

```int getSecond() const;
```

### 13.15.9 isNull()

Tests whether the interval is `NULL`. If the interval is `NULL` then `TRUE` is returned; otherwise, `FALSE` is returned.

Syntax

```bool isNull() const;
```

### 13.15.10 operator*()

Multiplies an interval by a specified value and returns the result.

Syntax

```const IntervalDS operator*(
const IntervalDS &interval,
const Number &val);```
Parameter Description
`interval`

Interval to be multiplied.

`val`

Value by which interval is to be multiplied.

### 13.15.11 operator*=()

Assigns the product of `IntervalDS` and `a` to `IntervalDS`.

Syntax

```IntervalDS& operator*=(
const IntervalDS &factor);```
Parameter Description
`factor`

A day second interval.

### 13.15.12 operator=()

Assigns the specified value to the interval.

Syntax

```IntervalDS& operator=(
const IntervalDS &src);```
Parameter Description
`src`

Value to be assigned.

### 13.15.13 operator==()

Compares the intervals specified. If the intervals are equal, then `TRUE` is returned; otherwise, `FALSE` is returned. If either interval is `NULL` then SQLException is thrown.

Syntax

```bool operator==(
const IntervalDS &first,
const IntervalDS &`second`);```
Parameter Description
`first`

The first interval to be compared.

`second`

The second interval to be compared.

### 13.15.14 operator!=()

Compares the intervals specified. If the intervals are not equal then `TRUE` is returned; otherwise, `FALSE` is returned. If either interval is `NULL` then SQLException is thrown.

Syntax

```bool operator!=(
const IntervalDS &first,
const IntervalDS &second);```
Parameter Description
`first`

The first interval to be compared.

`second`

The second interval to be compared.

### 13.15.15 operator/()

Returns the result of dividing an interval by a constant value.

Syntax

```const IntervalDS operator/(
const IntervalDS &dividend,
const Number &factor);```
Parameter Description
`dividend`

The interval to be divided.

`factor`

Value by which interval is to be divided.

### 13.15.16 operator/=()

Assigns the quotient of `IntervalDS` and `val` to `IntervalDS`.

Syntax

```IntervalDS& operator/=(
const IntervalDS &factor);```
Parameter Description
`factor`

A day second interval.

### 13.15.17 operator>()

Compares the intervals specified. If the first interval is greater than the second interval then `TRUE` is returned; otherwise, `FALSE` is returned. If either interval is `NULL` then SQLException is thrown.

Syntax

```bool operator>(
const IntervalDS &first,
const IntervalDS &`second`);```
Parameter Description
`first`

The first interval to be compared.

`second`

The second interval to be compared.

### 13.15.18 operator>=()

Compares the intervals specified. If the first interval is greater than or equal to the second interval then `TRUE` is returned; otherwise, `FALSE` is returned. If either interval is `NULL` then SQLException is thrown.

Syntax

```bool operator>=(
const IntervalDS &first,
const IntervalDS &first);```
Parameter Description
`first`

The first interval to be compared.

`second`

The second interval to be compared.

### 13.15.19 operator<()

Compares the intervals specified. If the first interval is less than the second interval then `TRUE` is returned; otherwise, `FALSE` is returned. If either interval is `NULL` then SQLException is thrown.

Syntax

```bool operator<(
const IntervalDS &first,
const IntervalDS &`second`);```
Parameter Description
`first`

The first interval to be compared.

`second`

The second interval to be compared.

### 13.15.20 operator<=()

Compares the intervals specified. If the first interval is less than or equal to the second interval then `TRUE` is returned; otherwise, `FALSE` is returned. If either interval is `NULL` then SQLException is thrown.

Syntax

```bool operator<=(
const IntervalDS &first,
const IntervalDS &second);```
Parameter Description
`first`

The first interval to be compared.

`second`

The second interval to be compared.

### 13.15.21 operator-()

Returns the difference between the intervals `first` and `second`.

Syntax

```const IntervalDS operator-(
const IntervalDS &first,
const IntervalDS &`second`);```
Parameter Description
`first`

The first interval to be compared.

`second`

The second interval to be compared.

### 13.15.22 operator`-=`()

Assigns the difference between `IntervalDS` and `val` to `IntervalDS`.

Syntax

```IntervalDS& operator-=(
const IntervalDS &val);```
Parameter Description
`val`

A day second interval.

### 13.15.23 operator+()

Returns the sum of the intervals specified.

Syntax

```const IntervalDS operator+(
const IntervalDS &first,
const IntervalDS &`second`);```
Parameter Description
`first`

The first interval to be compared.

`second`

The second interval to be compared.

### 13.15.24 operator+=()

Assigns the sum of `IntervalDS `and `val` to `IntervalDS`.

Syntax

```IntervalDS& operator+=(
const IntervalDS &val);```
Parameter Description
`val`

A day second interval.

### 13.15.25 set()

Sets the interval to the values specified.

Syntax

```void set(
int day,
int hour,
int minute,
int second,
int fracsec);```
Parameter Description
`day`

Day component.

`hour`

Hour component.

`min`

Minute component.

`second`

Second component.

`fracsec`

Fractional second component.

### 13.15.26 setNull()

Sets the `IntervalDS` to `NULL`.

Syntax

```void setNull();
```

### 13.15.27 toText()

Converts to a `string` representation for the interval.

Syntax

```string toText(
unsigned int lfprec,
unsigned int fsprec,
const string &nlsParam = "") const;```
Parameter Description
`lfprec`

`fsprec`

Fractional second precision.

`nlsParam`

The NLS parameters string. If `nlsParam` is specified, this determines the NLS parameters to be used for the conversion. If `nlsParam` is not specified, the NLS parameters are picked up from `envp`.

### 13.15.28 toUText()

Converts to a `UString` representation for the interval.

Syntax

```UString toUText(
unsigned int lfprec,
unsigned int fsprec) cosnt;```
Parameter Description
`lfprec`

`fsprec`