计算两个日期之间的时差SQL 2012 - 格式/转换为SSRS的TIME

时间:2016-11-01 16:18:57

标签: sql-server reporting-services time ssrs-2012

我希望有人可以提供帮助。我已经阅读了关于这个主题的几个问题/答案并且能够复制一些解决方案,但是我很难将我的输出格式化为时间格式,所以我可以在SSRS报告中聚合,我目前得到#Error。我已经设法使用下面的代码找到两个日期之间的时差,但是字段是VARCHAR,有没有办法转换时间或INT所以我可以格式化SSRS?

,CONVERT(VARCHAR(5),DATEDIFF (SECOND, FFP.[CreatedDate], FFP.[LastModifiedDate])/3600)+':'+
 CONVERT(VARCHAR(5),DATEDIFF (SECOND, FFP.[CreatedDate], FFP.[LastModifiedDate])%3600/60)+':'+
 CONVERT(VARCHAR(5),(DATEDIFF(SECOND, FFP.[CreatedDate], FFP.[LastModifiedDate])%60))+'.'+
 CONVERT(VARCHAR(5),(DATEDIFF(SECOND, FFP.[CreatedDate], FFP.[LastModifiedDate])%1000))     AS [Test] 

示例日期和输出CreatedDate = 2016-10-10 10:53:26.0829077 上次修改日期= 2016-10-10 11:06:09.2670000输出= 0:12:43.763。有没有办法将其转换为时间字段?

1 个答案:

答案 0 :(得分:0)

在SSRS中,您可以使用CDate()函数将日期字符串转换为日期时间对象。

例如:

=FORMAT(
DATEADD(
  DateInterval.Second,
  DATEDIFF(DateInterval.Second,CDATE("2016-10-10 10:53:26.0829077"),
    CDATE("2016-10-10 11:06:09.2670000")
  ),
  CDATE("00:00:00"))
,"HH:mm:ss")

在这种情况下,它会以秒为单位计算两个日期之间的差异,然后将该差异(以秒为单位)加到00:00:00,最后格式化为HH:mm:ss

如果有帮助,请告诉我。