在SSIS中计算两个日期之间的时间差

4

我有以下两列:

StartDate = 2017-01-01 00:00:00.000
EndDate = 2017-01-01 05:45:00.000

我需要为我的派生列编写一个SSIS表达式,以计算这两个日期时间之间的时间差。输出应为:

05:45:00.0000000

有人能帮忙写这个表达式吗?

提前感谢!!

2个回答

5
您可以使用DATEDIFF()函数来获取两个日期之间的差异。

以小时为单位的时间差

DATEDIFF("Hh",[StartDate],[EndDate])

分钟差异

DATEDIFF("mi",[StartDate],[EndDate])

分钟差异

DATEDIFF("ss",[StartDate],[EndDate])

建议的表达式返回HH:mm:ss

您需要获取秒数差,然后使用以下表达式:

RIGHT("000" + (DT_WSTR,3)(DATEDIFF("ss",@[User::StartDate],@[User::EndDate]) / 3600),3) + ":" + RIGHT("00" + (DT_WSTR,2)((DATEDIFF("ss",@[User::StartDate],@[User::EndDate]) % 3600) / 60)   ,2) + ":" + RIGHT("00" + (DT_WSTR,2)(DATEDIFF("ss",@[User::StartDate],@[User::EndDate])% 60),2)
参考资料

谢谢!不幸的是,我得到了一个错误,说RIGHT函数需要2个参数?你能帮忙吗?提前致谢! - JVGBI
它也可以是一个表达式,将“23”转换为00:23:00.0000000或将“61”转换为01:01:00.0000000,如果更容易的话?希望您能帮助我,非常感谢! :) - JVGBI
@ImperialBert 问题已解决,是因为多打了一个“)”符号。 - Yahfoufi

1

没有直接的函数可以给出您期望的输出,您需要以最小单位(秒或毫秒)获取两个日期之间的差异,然后应该构建自己的表达式将其转换为HH:mm:ss格式。

您可以使用以下表达式来获取两个日期之间的差异:

RIGHT("00" + (DT_WSTR,10)(DATEDIFF("ss",@[User::StartDate],@[User::EndDate]) / 3600),2) + ":" +
RIGHT("00" + (DT_WSTR,10)((DATEDIFF("ss",@[User::StartDate],@[User::EndDate]) % 3600) / 60)   ,2) + ":" + 
RIGHT("00" + (DT_WSTR,10)(DATEDIFF("ss",@[User::StartDate],@[User::EndDate])% 60),2)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,