【问题标题】:Calculate Difference between time in Teradata计算 Teradata 中的时间差
【发布时间】:2018-03-07 13:38:10
【问题描述】:

我想取两个日期字段的差异,但都是 varchar 字段

语法编辑器代码片段:

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

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

我希望整数的结果始终为 2 in min 并且它应该始终是整数

结果:- 2

如果有人能帮助完成我的案子,那就太好了。

谢谢

【问题讨论】:

  • 您可以将您的 varchar 值转换为 Datetime 类型,然后使用带有分钟参数的 DATEDIFF() 来查找差异,如果这是我们正在谈论的 sql server。请添加您正在使用的 SQL 软件

标签: sql time timestamp teradata


【解决方案1】:

您可以使用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 并将其转换为整数。

【讨论】:

  • 感谢 dnoeth 的结果
猜你喜欢
  • 2018-08-17
  • 2012-09-18
  • 2014-04-26
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
  • 2013-11-05
相关资源
最近更新 更多