Teradata:char变量的条件

时间:2017-10-13 12:02:19

标签: sql teradata

我想这样做:

select * from table 
WHERE report_date = '31.08.2017'

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

s for noobish question

1 个答案:

答案 0 :(得分:0)

Teradata以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,则需要手动将其转换为date使用to_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')