我正在尝试为特定的Teradata用户计算Teradata查询执行时间。我目前的灵感来自于此: Calculating-the-actual-query-run-time
SELECT date
,a.username
,a.errorcode
,SUBSTR(b.sqltextinfo, 1, 15000)
,a.starttime
,a.firstresptime
,a.firststeptime
,((a.firstresptime - a.starttime) HOUR(4) TO SECOND(2)) AS elapsedtime
,((a.firstresptime - a.firststeptime) HOUR(4) TO SECOND(2)) AS executiontime
,elapsedtime - executiontime AS delaytime
FROM dbc.QryLogV a
INNER JOIN dbc.QryLogSqlV b ON a.procid = b.procid AND a.queryid = b.queryid
WHERE a.Username = 'xxx';
可悲的是它触发了错误:
作为单一陈述执行。失败[7453:HY000]间隔字段溢出。
答案 0 :(得分:1)
多年前,DBQL中时间戳的datataype已从TIMESTAMP(2)
更改为TIMESTAMP(6)
,现在当您尝试在结果中获取SECOND(2)
时,它会溢出。要解决此问题,请使用SECOND(6)
或``SECOND`。
顺便说一句,根据你的发布,你会发现ElapsedTime
&在dbc.QryLogV中预先计算的DelayTime
。