首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用时间戳来计算和计算总时间?

如何用时间戳来计算和计算总时间?
EN

Stack Overflow用户
提问于 2017-02-28 18:47:01
回答 1查看 201关注 0票数 1

我正在为2016年水晶报告工作。我有一些datetime值来表示某些事情发生变化时的情况。我有一个改变datetime值的数值。在这种情况下,一些网络连接正在改变3个值(0、1、2)之间的状态。我想计算期间和期间的总和;然后绘制各期间之间的比率,以及报告的时间。我已经做了一些,但我认为我采取了错误的方法,因为最后一点不起作用。

我有在线、离线和部分在线的公式,(分别)如下:

代码语言:javascript
复制
If {CRV_AttributeLog.AnalogValue}=2
  Then {CRV_AttributeLog.LogTimeStamp}

If {CRV_AttributeLog.AnalogValue}=0
  Then {CRV_AttributeLog.LogTimeStamp}

If {CRV_AttributeLog.AnalogValue}=1
  Then {CRV_AttributeLog.LogTimeStamp}

我有计算各州之间周期的公式:

Online

代码语言:javascript
复制
abs(dateDiff("s", next({@TimeStampPartiallyOnline}), {@TimeStampOffline})) +
abs(dateDiff("s", next({@TimeStampPartiallyOnline}), {@TimeStampOnline})) 

离线

代码语言:javascript
复制
abs(dateDiff("s", next({@TimeStampOffline}), {@TimeStampOnline})) +
abs(dateDiff("s", next({@TimeStampOffline}), {@TimeStampPartiallyOnline})) 

部分在线

代码语言:javascript
复制
abs(dateDiff("s", next({@TimeStampPartiallyOnline}), {@TimeStampOffline})) +
abs(dateDiff("s", next({@TimeStampPartiallyOnline}), {@TimeStampOnline})) 

我不能总结计算周期的公式,大概是因为我有第一组有效变量的公式;Crystal Reports不喜欢嵌套公式。我不能只将copypasta替换为if ... then表达式的公式名;当我检查它是否有错误时,这会给我一个错误(字段必须在这里)。我考虑让if语句在前面,只有当它是脱机记录时才执行操作,但是我不能引用其他时间戳。

我可以把时间周期放到一个图表中,这样就可以把它们加起来。然而,计算的时间并不代表报告执行期间的所有时间,因此,由于数据的特殊性,虽然比率仍然很好,但结果图表并不是100%正确的。对于边缘情况,我无法计算连接离线的时间。例如,如果一个连接离线了整个报表长度,则会有许多时间戳表明它是脱机的,但由于没有联机时间戳,脱机期间为0,从而抛出图表。

如何计算这些期间,然后将其与报告的时间长度进行比较?我已经创建了一个公式,给我报告中的时间长度(除数,也就是分子),但是我需要红利(分母)来计算。

有没有更好的方法来解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-05 14:11:34

使用Next()函数的Crystal Reports计算必须等到所有排序、分组和汇总完成后才能完成。它们可以工作,但它们严格地限制了您对水晶中的结果所能做的。最好的方法是编写SQL查询,以便将每个记录链接到下一个记录。这样,水晶所看到的数据集在同一记录中既包括句点的开始,也包括句号的结束。如何编写该SQL将是另一个很好的问题。

对于没有值的边缘情况,我认为您希望使用IF-然后逻辑将缺失的值替换为目标期间的开始或目标周期的结束。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42516485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档