计算Teradata中时间的差异

时间:2018-03-07 13:38:11

标签: sql time timestamp teradata

我想区分2个日期字段,但两者都是varchar字段

SyntaxEditor Code Snippet:

start_time- 2018-03-02 06:31:22

end_time -  2018-03-02 06:33:32.478000  

我希望结果整数为2 in min,它应该是一个整数

  

结果: - 2

如果有人能帮助我实现这个目标,那将是非常好的。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用cast((cast(end_time as timestamp) - cast(start_time as timestamp) minute(4)) as int)之类的区间计算,但对于>它会失败9999分钟。

这是用于计算时间戳差异的SQL UDF,无限制:

REPLACE FUNCTION TimeStamp_Diff_Seconds
(
   ts1 TIMESTAMP(6)
  ,ts2 TIMESTAMP(6)
)
RETURNS DECIMAL(18,6)
LANGUAGE SQL
CONTAINS SQL
RETURNS NULL ON NULL INPUT
DETERMINISTIC
SQL SECURITY DEFINER
COLLATION INVOKER
INLINE TYPE 1
RETURN
(CAST((CAST(ts2 AS DATE)- CAST(ts1 AS DATE)) AS DECIMAL(18,6)) * 60*60*24)
      + ((EXTRACT(  HOUR FROM ts2) - EXTRACT(  HOUR FROM ts1)) * 60*60)
      + ((EXTRACT(MINUTE FROM ts2) - EXTRACT(MINUTE FROM ts1)) * 60)
      +  (EXTRACT(SECOND FROM ts2) - EXTRACT(SECOND FROM ts1))
;

如果您无法创建UDF,则可以复制源并应用最终/ 60并将其转换为整数。