使用DateDiff后格式化SSRS中的时间字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用DateDiff后格式化SSRS中的时间字段相关的知识,希望对你有一定的参考价值。

我在SSRS中有一个表达式,它返回2个日期时间值(h:m:s)之间的时间差。它工作,但它显示单个数字的时间(即:1:2:3而不是01:02:03。我已经尝试格式化每个部分,但SSRS拒绝代码。这是我的原始代码生效单位数时间:

=IIf(Fields!IncStatusActionType.Value = "TH",
DateDiff(DateInterval.Hour,CDATE(Fields!ActivityDate.Value), CDATE(Globals!ExecutionTime)) & ":" &
DateDiff(DateInterval.Minute,CDATE(Fields!ActivityDate.Value), CDATE(Globals!ExecutionTime)) Mod 60 & ":" &
DateDiff(DateInterval.Second,CDATE(Fields!ActivityDate.Value), CDATE(Globals!ExecutionTime)) Mod 60, "")

我尝试在小时字段上使用Format进行测试

=IIf(Fields!IncStatusActionType.Value = "TH", Format(DateDiff(DateInterval.Hour,CDATE(Fields!ActivityDate.Value), "HH"),其余的表达......

但它不起作用。我也尝试格式化为“##”和“0#”而没有运气。

任何建议将不胜感激。

谢谢

答案

你可以使用.ToString("00")来格式化LongDateDiff结果:

=IIf(Fields!IncStatusActionType.Value = "TH",
CLng(DateDiff(DateInterval.Hour,CDATE(Fields!ActivityDate.Value), CDATE(Globals!ExecutionTime))).ToString("00") & ":" &
CLng(DateDiff(DateInterval.Minute,CDATE(Fields!ActivityDate.Value), CDATE(Globals!ExecutionTime)) Mod 60).ToString("00") & ":" &
CLng(DateDiff(DateInterval.Second,CDATE(Fields!ActivityDate.Value), CDATE(Globals!ExecutionTime)) Mod 60).ToString("00"), "")
另一答案

我想到了。我把格式化命令搞砸了。这是有效的,因为其他人也有类似的问题。

=IIf(Fields!IncStatusActionType.Value = "TH",
Format(DateDiff(DateInterval.Hour, CDATE(Fields!ActivityDate.Value), CDATE(Globals!ExecutionTime)), "00") & ":" &
Format(DateDiff(DateInterval.Minute, CDATE(Fields!ActivityDate.Value), CDATE(Globals!ExecutionTime)) Mod 60, "00") & ":" &
Format(DateDiff(DateInterval.Second, CDATE(Fields!ActivityDate.Value), CDATE(Globals!ExecutionTime)) Mod 60, "00"), "")

以上是关于使用DateDiff后格式化SSRS中的时间字段的主要内容,如果未能解决你的问题,请参考以下文章

从字段设置SSRS BackgroundImage Source

SSRS 2008 R2-格式参数为DD / MM / YYYY

SSRS - 如何使用3个if语句,其中一个是空值

关于vb 中的日期时间函数

SSRS 2008,两个数据集,一个图表

SSRS-报表生成器-行为列