reporting-services - 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。谢谢
解决方案
我只是手动进行转换,而不是尝试使 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)
推荐阅读
- java - 忽略回文检查器上的大小写
- reactjs - Redux - 如何更新数组中的项目
- c++ - C ++为什么当循环大小变大时这个带有vector.insert()的并行for循环会崩溃?
- docker - 如何指定 Docker Hub 令牌范围
- reactjs - 来自 useState 的自定义钩子的返回类型不正确
- apache - 如何使用 mod_proxy over https 在 Apache 和 Wildfly 19 之间设置双向 SSL 或相互身份验证?
- r - 按组使用 cov.wt 和 data.table 的加权相关性
- angular - 您可以将 GET 方法中的数据分配给 Angular 8 中的外部变量吗?
- javascript - 执行 jquery ajax 代码而不打开执行它的网页
- python - 从句子中提取相关日期和位置