我想这样做:
select * from table
WHERE report_date = '31.08.2017'
report_date是CHAR变量,我收到错误3535(字符串转换为数字值失败) 我该如何更改查询?
s for noobish question
答案 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')