2017-07-18 13 views
0

私は、どのクエリに通常よりも多くの時間がかかっているかを調べるという単純な問題に悩まされています。私のスクリプトは以下の通りです:はどのように私は一定の値よりも大きい時間間隔を持つレコードを取得することができます:Teradataの特定の値より大きい時間間隔を持つレコードを選択してください

locking row for access 
SELECT 
username, 
CollectTimeStamp, 
((firstresptime - starttime ) HOUR TO second ) AS ElapsedTime, 
((firstresptime - firststeptime ) HOUR TO second) AS ExecutionTime, 
CAST(((firstresptime - firststeptime) SECOND) AS INTEGER) AS ExecutionTimeInt, 
(ElapsedTime - ExecutionTime) AS Delay, 
-- other kpis here 
FROM dbql_data.dbql_all 
where username ='MyUser'; 
and dateofday> '2017-07-01' 
    and ExecutionTimeInt > 5 

しかし、私はExecutionTimeInt 5未満

質問を持つレコードを取得しますか?

追加情報:

select * from dbc.dbcinfo;戻り

InfoKey InfoData 
1 VERSION 15.10.04.10 
2 RELEASE 15.10.04.02 
3 LANGUAGE SUPPORT MODE Standard 

答えて

3

ExecutionTimeInt計算は、それが9999秒に制限されていますようInterval overflowで失敗する可能性があります。

ElapsedTimeインターバルで、比較するための正しい方法は次のとおりです。

WHERE ElapsedTime > interval '5' second 

または私の特定のケースで

WHERE ElapsedTime > interval '1' minute 
+0

、すべてのことから、以上9999秒を持っていることは非常に小さなチャンスがありますクエリはTeradata.Netクライアントを使用して発行され、最大600秒のタイムアウトがあります。とにかく、私は最初の提案( 'WHERE ElapsedTime> interval '5' second')を試みました、そして、私はそれが' 0:00:00.020000'のような小さな値であるように見えます。 – Alexei

+0

@Alexei:これがあなたの実際のクエリであれば、 'username' = 'MyUser'; ':-) – dnoeth

+0

Damnの後に'; 'を削除してください。 SQLアシスタントでそれを逃した。それはもちろん、それなしで動作します。ありがとう。 – Alexei

関連する問題