【问题标题】:Teradata: condition on a char variableTeradata:char 变量的条件
【发布时间】:2017-10-13 22:43:32
【问题描述】:

我想这样做:

select * from table 
WHERE report_date = '31.08.2017'

report_date 是 CHAR 变量,我收到错误 3535(字符串转换为数值失败) 我应该如何更改我的查询?

对于无聊的问题很抱歉

【问题讨论】:

  • 该错误表明 report_date 列具有数值数据类型。
  • Teradata 没有日期数据类型吗?

标签: sql teradata


【解决方案1】:

Teradata 以'YY/MM/DD'ANSI 格式'YYYY-MM-DD' 处理日期文字。 ANSI DATE 文字形式 DATE 'YYYY-MM-DD' 不依赖于格式设置或默认值。

在这种情况下,您正确的查询将如下所示

SELECT *
FROM TABLE
WHERE report_date = '2017-08-31';

无论交易模式如何,上述内容都将起作用,即ANSI/BTET

但是,如果您的date 列是CHAR 数据类型并且数据存储为'31.08.2017'DD.MM.YYYY,您需要使用to_date 手动将其转换为date

SELECT *
FROM TABLE
WHERE to_date(report_date, 'YYYY-MM-DD') = to_date('31.08.2017', 'dd.mm.yyyy')

或如下图右侧。

select * 
from TABLE
WHERE report_date =  to_date('31.08.2017', 'dd.mm.yyyy');

或使用cast

select * 
from table
WHERE cast(report_date as date) =  cast('31.08.2017' as date format 'dd.mm.yyyy')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2020-11-27
    相关资源
    最近更新 更多