2017-07-18 103 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:如果這是您的實際查詢,請在'where用戶名='MyUser';':-)後刪除';' – dnoeth

+0

該死的。錯過了SQL助手。當然,它沒有它。謝謝。 – Alexei

相關問題