【问题标题】:Subtracting value in one column from the date in another column从另一列中的日期减去一列中的值
【发布时间】:2021-03-28 05:21:44
【问题描述】:

我试过了:

add_months('date_column',  -'number_of_months_column') 

我明白了:

错误 [3535] 字符串转换为数值失败。

我尝试使用add_months 选项是否可行?

【问题讨论】:

  • 请发布示例数据和预期输出
  • 这两列的数据类型是什么?第一个实际上是 DATE 和第二个数字(例如 INTEGER)吗?似乎至少有一个是字符串,并且正在尝试隐式数据类型转换。

标签: sql teradata teradata-sql-assistant teradatasql


【解决方案1】:

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

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

说明:

查询中的字符串常量在上下文中要求 它代表一个数值,它不。

补救措施:

将常量更改为数值或字符串 表示一个数值。

【讨论】:

  • 欢迎来到 Stack Overflow!您能否用您所指的链接中的引用来更新您的答案?否则,万一链接失效,您的回答将对其他人毫无用处。谢谢!
【解决方案2】:

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

如果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))

【讨论】:

    猜你喜欢
    • 2021-10-11
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2021-02-22
    • 2020-03-14
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    相关资源
    最近更新 更多