2017-10-13 51 views
0

我想這樣做一個char條件:Teradata的:可變

select * from table 
WHERE report_date = '31.08.2017' 

REPORT_DATE是CHAR變量,我得到我應該如何改變錯誤3535(字符串未能轉換爲數值) 我查詢?

SRY爲noobish問題在任Teradata數據格式'YY/MM/DD'ANSI格式'YYYY-MM-DD'

+2

即錯誤指示REPORT_DATE柱具有一個數值數據類型。 – jarlh

+1

Teradata是否有日期數據類型? – jarlh

回答

0

Teradata的手柄日期文字。 ANSI DATE字面格式DATE 'YYYY-MM-DD'不依賴於格式設置或默認值。

在這種情況下,你正確的查詢會像

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

以上將不考慮工作的交易模式,即ANSI/BTET

但是,如果你dateCHAR數據類型和數據存儲爲'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')