2017-10-13 10 views
0

変数CHARの条件:のTeradata:私はこれをしたい

select * from table 
WHERE report_date = '31.08.2017' 

report_dateはCHAR変数であると私は変更する必要がありますどのようにエラー3535 (文字列を数値に変換に失敗した)そうだ、私のクエリ?

+2

というエラーを使用してはreport_date列は、数値データ・タイプを有することを示します。 – jarlh

+1

Teradataに日付データ型がありませんか? – jarlh

答えて

0

のTeradataハンドル日付リテラルのTeradata形式'YY/MM/DD'またはANSI形式'YYYY-MM-DD'のいずれかでnoobish質問に対する

SRY。 ANSI DATEリテラルフォームDATE 'YYYY-MM-DD'は、フォーマット設定またはデフォルトに依存しません。この場合

は、あなたが正しい問合せは、上記ただし ANSI/BTET

つまり、トランザクション・モードに関係なく動作します

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

のようになります。あなたの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') 
関連する問題