2017-09-25 8 views
0

私はTeradataテーブルを持っています。このテーブルでは、値が整数で、HOUR(2)TO MINUTEに変換する必要があります。Teradata:Interval HOUR(2)をMINUTEに変換中にエラーが発生しました

のTeradata documentationによるなど

+0

「col1」のサンプル値を親切に共有します。 – zarruq

+0

両方の値がちょうど私の最後に変換されました。 '5192'と '8734'から '1:26'と '2:25'と 'BT'と 'ANSI'モードでそれぞれ 'sqla'と' bteq'を実行します。親切に 'col1'から' max'値を共有してください – zarruq

答えて

0

を、私は以下の声明を試してみましたが、エラーのような間隔フィールドがオーバーフローを取得

CAST(CAST(col1 AS DECIMAL(18,0)) * INTERVAL '0000:01' MINUTE TO SECOND AS INTERVAL HOUR(2) TO MINUTE) from table1 

COL1が5192または8734のような整数値が含まれています

INTERVAL HOUR TO MINUTEの値の範囲は次のとおりです。当該共有サンプルデータについて

Type and Precision   | Minimum Value | Maximum Value 
----------------------------------------------------------------- 
INTERVAL HOUR(1) TO MINUTE  -'9:59'    '9:59' 
INTERVAL HOUR(2) TO MINUTE  -'99:59'    '99:59' 
INTERVAL HOUR(3) TO MINUTE  -'999:59'   '999:59' 
INTERVAL HOUR(4) TO MINUTE  -'9999:59'   '9999:59' 

以下に示すように、出力値はINTERVAL HOUR(2) TO MINUTEの範囲にあります。

SELECT CAST(CAST(5192 AS DECIMAL(18,0)) * INTERVAL '0000:01' MINUTE TO SECOND AS INTERVAL HOUR(2) TO MINUTE) AS Value1, 
     CAST(CAST(8734 AS DECIMAL(18,0)) * INTERVAL '0000:01' MINUTE TO SECOND AS INTERVAL HOUR(2) TO MINUTE) AS Value2; 

結果:

Value1 | Value2 
-------------- 
1:26 2:25 

あなたの換算値のいくつかは、あなたが上から3番目のオプションを使用する必要があり、その場合には99:59を超えているようです。特定のクエリとサンプルデータについては

任意の値が359999よりも大きければ、それはエラー

間隔フィールドがオーバーフロー

でこれが役立つことを願っていますが失敗します - )

+0

最大値は359999ですが、今は35999です。私はそれがあなたの最後の誤植だと思います。 –

+0

はい。指摘してくれてありがとう。私に更新させてください:-) – zarruq

関連する問題