teradata:计算2个时间间隔之间的差异

时间:2012-09-27 05:40:46

标签: sql stored-procedures teradata

我想计算2个时间间隔之间的时差,如代码所示

replace procedure database.table()               
begin  
declare v_StartTime Timestamp;  
decalre v_EndTime Timestamp;        
decalre v_TimeTaken Varchar(20);         

set v_StartTime = current_timestamp;       
/* set of queries...........          
...................                
.....................             

*/       
set v_EndTime =current_timestamp;

set v_timeTaken = v_EndTime - v_StartTime ;

/* I want the time difference in secs or mins*/

End;

还有其他更好的方法可以在分钟或秒内获得时间间隔

1 个答案:

答案 0 :(得分:1)

这应该以秒为单位获得您的经过时间。

set v_TimeTaken = 
   (EXTRACT(DAY    FROM (v_EndTime - v_StartTime DAY(4) TO SECOND)) * 86400)
 + (EXTRACT(HOUR   FROM (v_EndTime - v_StartTime DAY(4) TO SECOND)) * 3600)
 + (EXTRACT(MINUTE FROM (v_EndTime - v_StartTime DAY(4) TO SECOND)) * 60)
 +  EXTRACT(SECOND FROM (v_EndTime - v_StartTime DAY(4) TO SECOND)) 

Teradata中的时间戳算法总是我必须要查找的东西。这不是我经常做的事情,并不像Oracle的方法那样直观。