我如何从水晶报告中的日期时间获得持续时间

时间:2013-10-18 16:50:10

标签: crystal-reports

我正在使用水晶报告,并试图让我花费多长时间完成一项任务。该报告目前从SQL中提取了一个可接受的日期时间和完成的日期时间。

我想要制作的是一个字段,您可以在其中查看完成任务需要多少个月,几天,几小时,几分钟和几秒钟。它在SQL中保存的方式是01/01/1901 00:00:00,例如在Accepted和Completed字段中。我目前已经建立了这个,但它没有准确地提取信息。请有人帮忙吗。感谢您的帮助。

StringVar varMonth := ToText(DatePart("m",{PROJECT_MGMT.STATUS_UPDATE_DATE}) - DatePart("m",{PROJECT_MGMT.PROJECT_ASSIGN_DATE}),0);
StringVar varDay := ToText(DatePart("d",{PROJECT_MGMT.STATUS_UPDATE_DATE}) - DatePart("d",{PROJECT_MGMT.PROJECT_ASSIGN_DATE}),0);
StringVar varHour := ToText(DatePart("h",{PROJECT_MGMT.STATUS_UPDATE_DATE}) - DatePart("h",{PROJECT_MGMT.PROJECT_ASSIGN_DATE}),0);
StringVar varMinute := ToText(DatePart("n",{PROJECT_MGMT.STATUS_UPDATE_DATE}) - DatePart("n",{PROJECT_MGMT.PROJECT_ASSIGN_DATE}),0);
StringVar varSecond;
NumberVar fff := DatePart("s",{PROJECT_MGMT.STATUS_UPDATE_DATE}) - DatePart("s",{PROJECT_MGMT.PROJECT_ASSIGN_DATE}) + 60;
if (fff >= 60) Then
fff = fff - 60;
varSecond = ToText(fff);
varMonth + " Months " + varDay + " Days " + varHour + " Hours " + varMinute + " Minutes " + ToText(fff) + " Seconds "

1 个答案:

答案 0 :(得分:0)

在Crystal报表中,创建5个公式,每个月,每天,每小时,每分钟,每秒一个。 所有代码都是相同的,除了Interval类型值(“m”,“d”,“h”,“n”,“s”):

cStr(DateDiff("m", AcceptDate, CompleteDate),0)

需要转换为字符串才能删除小数。 然后你创建另一个公式,你把它们放在一起,如:

Formula1 + " months," + Formula2 + " days," + Formula3 + " hours," + ......

你明白了。

希望有所帮助,

克里斯

编辑:对不起,我在写完之后意识到它不起作用,因为它会显示总数的月份和日期等等。所以也许你需要计算差异。给我一些时间来解决这个问题。

编辑2: 好的,所以我认为你可以这样做的方法是使用以下类型的公式:

year(completeDate)- year(acceptDate)

会给你一年。您可以按月,日,小时等方式进行相同操作。然后将它们放在一个单独的公式中。唯一需要注意的是,如果你跨越一年,而不是12个月。说2013年10月到2014年2月。因此,如果年份大于1,您将必须输入一个“if”语句来检查月份是否大于12.你明白了吗?