2017-11-21 8 views
0

文字列データ型の場合はTABLE1に文字列COL1があります。この表はInformaticaセッション(メインフレームからのデータ)によってロードされ、COL1の形式はYYYY-MM-DDです。今度は、次のマッピングでTABLE1をソースとして使用する必要があります。 2番目のマッピングのSQLオーバーライドクエリでは、以下のクエリを使用してCOL1を現在までキャストします。Teradataの現在までの文字列キャストに関する問題

SELECT 
CAST(COL1 AS DATE FORMAT 'YYYY-MM-DD') AS CHK_DT FROM TABLE1 

Teradata SQLAでこのクエリを実行しようとすると、正しく実行されているかどうかを確認するだけで、以下のエラーが表示されます。

SELECT Failed. 2666: Invalid date supplied for COL1. 

この問題を解決するお手伝いをしていただけますか?これは問題のある唯一の日付列ではなく、さらに2つの日付列があります。私は解像度が3つの列すべてについて同じであると思います。

P.S - 確認するだけで、TABLE1のCOL1のすべての行を2016-12-12として更新し、select文を実行して正常に動作しました。その後、すべての行のCOL1を2016-13-12として更新しました。同じエラーが発生しました。 DDまたはMMのいずれかが12以上であれば、私が

おかげ

+0

'yyyy-mm-dd'形式の' 2016-13-12'はどのような日付になりますか? – dnoeth

答えて

0

をエラー与えているこんにちは代わりに使用しているトランスフォーメーションのコード

CAST(CAST(date_col AS FORMAT 'YYYY-MM-DD') AS VARCHAR(15)) 

のこの作品を試してみてください。

+0

しかし、私のキャストの出力は日付でなければなりません。上記の場合、再びcharに変換されます。 –

1

DATEがANSI標準リテラルYYYY-MM-DDで表され/格納されている場合、CASTが機能します。

SELECT CAST('2016-12-13' AS DATE FORMAT 'YYYY-MM-DD') AS Date1 

enter image description here

私はあなたの場合にはそれを疑うが。

日付はおそらくYYYY-DD-MM形式です。その場合、ANSI標準形式でエラーがスローされます。あなたはYYYY-DD-MM

select CAST('2016-13-12' AS DATE FORMAT 'YYYY-DD-MM') AS Date2 

enter image description here

P.S.が必要TYPE()機能を使用して、現在までの変換を確認することができます。あなたのケースではDATEを返す必要があります。

0

ありがとうございます。しかし、問題は何か他のものでした。入ってくるレコードの中には、この列にスペースがあります。だから私は私のinformaticaマッピングを微調整して日付列にトリムを入れなければならなかった。今すぐ選択が正常に実行されています。御時間ありがとうございます 。

関連する問題