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

calculate time difference between two dates in ssis

我有以下两列:

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

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

05:45:00.0000000

谁能帮忙写下这个表达式?

提前致谢!!

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

小时差异

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

分钟差异

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

分钟差异

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

建议表达式 return 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)

参考资料

没有直接函数可以为您提供预期的输出,您必须以所需的最小单位(秒或毫秒)获取两个日期之间的差异,然后您应该构建自己的表达式将其转换为 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)