我有以下两列:
StartDate = 2017-01-01 00:00:00.000
EndDate = 2017-01-01 05:45:00.000
我需要为我的派生列编写一个SSIS表达式,以计算这两个日期时间之间的时间差。输出应为:
05:45:00.0000000
有人能帮忙写这个表达式吗?
提前感谢!!
我有以下两列:
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])
建议的表达式返回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)