首页 > 解决方案 > Microsoft Reporting Services -- 如何将毫秒转换为 dd:mm:ss 格式

问题描述

我的数据库中有一个毫秒值(105823 毫秒),我想将其转换为 dd:hh:mm:ss 值。这是我能得到的最接近的方法是使用以下代码。

=Format(DateAdd("s",Fields!TimeSinceLastReset.Value , "00:00:00"), "dd:hh:mm:ss")

如果 dd 关闭,只要它小于 24 小时,它就可以工作,它使用 12 小时而不是 24 小时。
我的结果是 02:05:23:43。我真的不需要秒,只是 hh:mm 就可以了。小时可以超过 24。谢谢

标签: reporting-services

解决方案


我只是手动进行转换,而不是尝试使 DATEADD 和 FORMAT 以您需要的方式工作。FORMAT 中的小时数永远不会显示为 0,自您使用日期字段以来的日期也不会显示。:(

您说 105823 毫秒,然后将其转换为秒。假设您的字段是秒,我会尝试使用 MOD 和 INT 为每个部分转换它:

=RIGHT("00" & INT( Fields!TimeSinceLastReset.Value / 86400), 3) & ":" &
 RIGHT("0" & INT( (Fields!TimeSinceLastReset.Value MOD 86400) / 3600), 2) & ":" & 
 RIGHT("0" & INT(((Fields!TimeSinceLastReset.Value MOD 86400) MOD 3600) / 60), 2) & ":" & 
 RIGHT("0" & INT(((Fields!TimeSinceLastReset.Value MOD 86400) MOD 3600) MOD 60), 2)

结果是

001:05:23:43

86,400 是一天的秒数,3600 是一小时的秒数。它使用 MOD 从每个后续时间字段的先前计算中获取余数。

如果您不想要这些日子,您可以删除MOD 86400.

如果是毫秒,您可能需要将字段除以 1000。

(Fields!TimeSinceLastReset.Value / 1000)

推荐阅读