15.00 - OADD_MONTHS - Teradata Database

Teradata Database SQL Functions, Operators, Expressions, and Predicates

Product
Teradata Database
Release Number
15.00
Content Type
Programming Reference
Publication ID
B035-1145-015K
Language
English (United States)
Last Update
2018-09-24

OADD_MONTHS

Purpose  

Adds a specified date_timestamp_value to a specified num_months and returns the resulting date.

Syntax  

where:

 

Syntax element …

Specifies …

TD_SYSFNLIB

the name of the database where the function is located.

date_timestamp_value

a date or timestamp argument.

If date_timestamp_value is NULL, NULL is returned.

num_months

a numeric argument.

If num_months is NULL, NULL is returned.

ANSI Compliance

This is a Teradata extension to the ANSI SQL:2011 standard.

Invocation

OADD_MONTHS is an embedded services system function. For information on activating and invoking embedded services functions, see “Embedded Services System Functions” on page 24.

Argument Types and Rules

Expressions passed to this function must have the following data types:

  • date_timestamp_value = DATE, TIMESTAMP, or TIMESTAMP WITH TIME ZONE
  • num_months = INTEGER
  • For the num_months argument, you can also pass values with data types that can be converted to INTEGER using the implicit data type conversion rules that apply to UDFs. Implicit type conversion is not supported for the date_timestamp_value argument.

    Note: The UDF implicit type conversion rules are more restrictive than the implicit type conversion rules normally used by Teradata Database. If an argument cannot be converted to the required data type following the UDF implicit conversion rules, it must be explicitly cast.

    For details, see “Compatible Types” in SQL External Routine Programming.

    Since TIMESTAMP values are stored in UTC time within the database and lack a time zone, the session time zone is used to interpret the time stamp value within the function. For TIMESTAMP WITH TIME ZONE values, the time zone component is used to interpret the time stamp value within the function.

    If the day component of date_timestamp_value is the last day of the month, or if the resulting month has fewer days than the day component of date_timestamp_value, OADD_MONTHS returns the last day of the resulting month. Otherwise, OADD_MONTHS returns a value that has the same day component as date_timestamp_value.

    The difference between OADD_MONTHS and ADD_MONTHS is that if a month is added to an end-of-month date in OADD_MONTHS, the function always returns an end-of-month date. The following queries illustrate the difference between ADD_MONTHS and OADD_MONTHS:

  • This query:
  • SELECT ADD_MONTHS ('2008-02-29', 1);

    returns '08/03/29'

  • This query:
  • SELECT OADD_MONTHS ('2008-02-29', 1);

    returns '08/03/31'

    Result Type

    OADD_MONTHS is a scalar function whose return data type is DATE.

    Example  

    The following query:

    SELECT OADD_MONTHS (DATE '2008-02-15', 1); 

    returns the result 08/03/15.

    Example  

    The following query:

    SELECT OADD_MONTHS (DATE '2008-02-20', 2); 

    returns the result 08/04/20.

    Example  

    The following query:

    SELECT OADD_MONTHS (DATE '2008-02-29', 1); 

    returns the result 08/03/31.

    Since 29 is the last day in February, March 31 is returned since 31 is the last day in March.