# IntervalYM Class

`IntervalYM` supports the SQL92 datatype Year-Month Interval.

Leading field precision will be determined by number of decimal digits on input.

Table 12-21 Fields of IntervalYM Class

Field Type Description

`year`

`int`

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

`month`

`int`

Month component. Valid values are `-11` through `11`.

Example 12-8 How to Create, Assign Values, and Use an Empty IntervalYM Object through Direct Assignment

This example demonstrates that the default constructor creates a `NULL` value, and how you can assign a non `NULL` value to a year-month interval and then perform operations on it:

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

// Create a NULL year-month interval
IntervalYM ym
if(ym.isNull())
cout << "\n ym is null";

// Assign a non-NULL value to ym
IntervalYM anotherYM(env, "10-30");
ym=anotherYM;

// Now all operations on YM are valid
int yr = ym.getYear();

```

Example 12-9 How to Create, Assign Values, and Use an IntervalYM Object through ResultSet and toText() method

This example demonstrates how to get the year-month interval column from a result set, add to the year-month interval by using the `+=` operator, multiply by using the `*` operator, compare 2 year-month intervals, and convert a year-month interval to a string by using the `toText()` method.

```//SELECT WARRANT_PERIOD from PRODUCT_INFORMATION
//obtain result set
resultset->next();

//get interval value from resultset
IntervalYM ym1 = resultset->getIntervalYM(1);

ym1 += addWith;    //call += operator

IntervalYM mulYm1 = ym1 * Number(env, 10);    //call * operator
if(ym1<mulYm1)    //comparison
.
.
string strym = ym1.toText(3);    //3 is the leading field precision

```

Table 12-22 Summary of IntervalYM Methods

Method Summary

IntervalYM()

`IntervalYM` class constructor.

fromText()

Converts a `string` into an `IntervalYM`.

fromUText()

Converts a `UString` into an `IntervalYM`.

getMonth()

Returns month interval value.

getYear()

Returns year interval value.

isNull()

Checks if the interval is `NULL`.

operator*()

Returns the product of two `IntervalYM` 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 `interval` 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 `interval` with value `(``a - b``)`.

operator`-=`()

Subtraction assignment.

operator+()

Returns the sum of two `IntervalYM` values.

operator+=()

set()

Sets the interval to the values specified.

setNull()

Sets the interval to `NULL`.

toText()

Converts to a `string` representation of the interval.

toUText()

Converts to a `UString` representation of the interval.

## IntervalYM()

IntervalYM class constructor.

Syntax Description
```IntervalYM();
```
Constructs a `NULL` `IntervalYM` object. A `NULL` `IntervalYM` can be initialized by assignment or calling operator*() method. Methods that can be called on `NULL` `IntervalYM` objects are setName() and isNull().
```IntervalYM(
const Environment *env,
int year  = 0,
int month = 0);
```
Creates an `IntervalYM` object within the specified `Environmen`.
```IntervalDS(
const IntervalYM &src);
```
Copy constructor.

Parameter Description
```env
```
The `Environment`.
```year
```
The `year` field of the `IntervalYM` object.
```month
```
The `month` field of the `IntervalYM` object.
```src
```
The source that the `IntervalYM` object will be copied from.

## fromText()

This method initializes the interval to the values in `inpstr`. The string is interpreted using the nls parameters set in the 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 year month interval of the form 'year-month'.
```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`.
```env
```
Environment whose nls parameters will be used.

## 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 year month interval of the form 'year-month'.
```env
```
The `Environment`.

## getMonth()

This method returns the month component of the interval.

Syntax

```int getMonth() const;

```

## getYear()

This method returns the year component of the interval.

Syntax

```int getYear() const;

```

## isNull()

This method tests whether the interval is `NULL`. If the interval is `NULL` then `TRUE` is returned; otherwise, `FALSE` is returned.

Syntax

```bool isNull() const;

```

## operator*()

This method multiplies the interval by a factor and returns the result.

Syntax

```const IntervalYM operator*(
const IntervalDS &interval
const Number &val);
```
Parameter Description
```interval
```
Interval to be multiplied.
```val
```
Value by which interval is to be multiplied.

## operator*=()

This method multiplies the interval by a specified value.

Syntax

```IntervalYM& operator*=(
const Number &factor);
```
Parameter Description
```factor
```
Value to be multiplied.

## operator=()

This method assigns the specified value to the interval.

Syntax

```IntervalYM& operator=(
const IntervalYM &src);
```
Parameter Description
```src
```
Value to be assigned.

## operator==()

This method 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 IntervalYM &first,
const IntervalYM &second);
```
Parameter Description
```first
```
The first interval to be compared.
```second
```
The second interval to be compared.

## operator!=()

This method 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 IntervalYM &first,
const IntervalYM &second);
```
Parameter Description
```first
```
The first interval to be compared.
```second
```
The second interval to be compared.

## operator/()

This method returns the result of dividing the interval by a factor.

Syntax

```const IntervalYM operator/(
const IntervalYM &dividend,
const Number &factor);
```
Parameter Description
```dividend
```
The interval to be divided.
```factor
```
Value by which interval is to be divided.

## operator/=()

This method divides the interval by a factor.

Syntax

```IntervalYM& operator/=(
const Number &factor);
```
Parameter Description
```factor
```
A day second interval.

## operator>()

This method 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 IntervalYM &first,
const IntervalYM &second);
```
Parameter Description
```first
```
The first interval to be compared.
```second
```
The second interval to be compared.

## operator>=()

This method 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 IntervalYM &first,
const IntervalYM &second);
```
Parameter Description
```first
```
The first interval to be compared.
```second
```
The second interval to be compared.

## operator<()

This method 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 IntervalYM &first,
const IntervalYM &second);
```
Parameter Description
```first
```
The first interval to be compared.
```second
```
The second interval to be compared.

## operator<=()

This method 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 IntervalYM &first,
const IntervalYM &second);
```
Parameter Description
```first
```
The first interval to be compared.
```second
```
The second interval to be compared.

## operator-()

This method returns the difference between the intervals specified.

Syntax

```const IntervalYM operator-(
const IntervalYM &first,
const IntervalYM &second);
```
Parameter Description
```first
```
The first interval to be compared.
```second
```
The second interval to be compared.

## operator`-=`()

This method computes the difference between itself and another interval.

Syntax

```IntervalYM& operator-=(
const IntervalYM &val);
```
Parameter Description
```val
```
A day second interval.

## operator+()

This method returns the sum of the intervals specified.

Syntax

```const IntervalYM operator+(
const IntervalYM &first,
const IntervalYM &second);
```
Parameter Description
```first
```
The first interval to be compared.
```second
```
The second interval to be compared.

## operator+=()

This method assigns the sum of `IntervalYM` and `val` to `IntervalYM`.

Syntax

```IntervalYM& operator+=(
const IntervalYM &val);
```
Parameter Description
```val
```
A day second interval.

## set()

This method sets the interval to the values specified.

Syntax

```void set(
int year,
int month);
```
Parameter Description
```year
```
Year component. Valid values are `-10^9` through `10^9`.
```month
```
Month component. Valid values are `-11` through `11`.

## setNull()

This method sets the interval to `NULL`.

Syntax

```void setNull();

```

## toText()

This method returns the string representation of the interval.

Syntax

```string toText(
unsigned int lfprec,
const string &nlsParam = "") const;
```
Parameter Description
```lfprec
```
```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`.

## toUText()

Converts to a `UString` representation for the interval.

Syntax

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