【问题标题】:calculate time difference between two dates in ssis计算ssis中两个日期之间的时间差
【发布时间】:2017-12-14 15:38:16
【问题描述】:

我有以下两列:

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

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

05:45:00.0000000

谁能帮忙写这个表达式?

提前致谢!!

【问题讨论】:

    标签: sql sql-server ssis expression sql-server-data-tools


    【解决方案1】:

    您可以使用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 个参数?你有什么可以帮忙的吗?提前致谢!
    • 它也可以是一个表达式,将“23”转换为 00:23:00.0000000 或“61”转换为 01:01:00.0000000,如果这样更容易?我希望你能帮助我非常感谢! :)
    • @ImperialBert 问题已解决,错误地多出了一个“)”。
    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2021-11-25
      • 2011-08-01
      • 2021-08-14
      • 2012-06-10
      • 1970-01-01
      • 2021-10-09
      • 2010-12-04
      • 1970-01-01
      相关资源
      最近更新 更多