0

我正在使用水晶报告,我试图确定我完成一项任务所花费的时间。该报告当前从 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 "
4

1 回答 1

0

在您的 Crystal 报表中,创建 5 个公式,每个月、天、小时、分钟、秒一个。除了间隔类型值(“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。您明白了吗?

于 2013-10-18T17:58:05.653 回答