从另一列中的日期减去一列中的值

Subtracting value in one column from the date in another column

我试过:

add_months('date_column',  -'number_of_months_column') 

我得到:

error [3535] A character string failed conversion to a numeric value.

我尝试使用 add_months 选项可以实现吗?

是的,我相信这是可能的。但是您需要确保第二个参数是数字数据类型。根据错误,某些记录似乎无法隐式转换为数字。

以下详细信息来自有关 Error 3535 及其解决方案的 Teradata 文档。

Explanation:

A character string constant in a query is in a context requiring that it represent a numeric value, and it does not.

Remedy:

Change the constant to either a numeric value or a character string that represents a numeric value.

为什么要在列名周围使用单引号?

如果 number_of_months_column 的数据类型是 integer 那么这应该有效:

add_months(date_column, -number_of_months_column)

如果number_of_months_column是一个字符串那么你必须先把它转换成一个整数:

add_months(date_column, -to_number(number_of_months_column))

或:

add_months(date_column, -cast(to_number(number_of_months_column) as integer))

或:

add_months(date_column, -trycast(to_number(number_of_months_column) as integer))