0

我希望从类似于此论坛的列中计算总时间:

https://stackoverflow.com/questions/3054943/calculate-sum-time-with-mysql

这是我的代码不起作用:

SEC_TO_TIME(SUM(TIME_TO_SEC(CASE WHEN (SUBSTR(Total_Time,1,2) - 
SUBSTR(ActivityTime,1,2)) < 0 
THEN '0' || DATEDIFF(hh,Total_Time,ActivityTime)-1 || ':' || DATEDIFF(mi,Total_Time,ActivityTime)
WHEN (SUBSTR(Total_Time,1,2) - SUBSTR(ActivityTime,1,2)) >= 0
THEN '0' || DATEDIFF(hh,Total_Time,ActivityTime) || ':' ||
DATEDIFF(mi,Total_Time,ActivityTime)
END))) AS TotalVariance,

任何帮助都会很棒!谢谢!

4

1 回答 1

1

我不确定这是否对您或某人有帮助。ObjectScript 中有Calculated/SqlComputed 属性。基本上,您可以定义如下属性:

Property TotalTime As %Integer [ Calculated, SqlComputeCode =
        {s {TotalTime}=##class(SomeClass).SomeClassMethod({Id})}, SqlComputed ]

现在您只需要编写 SomeClassMethod。它可以继续任何 ObjectScript 代码,包括 %Open,只是不要让它循环。如果您只需要其他一些字段来制作它,您可以这样:

Property TotalTime As %Integer [ Calculated, SqlComputeCode =
        {s {TotalTime}=##class(Some).SomeCM({PropA}, {PropB})}, SqlComputed ]

在那里,您将获取属性作为类方法的输入,而不是获取 ID 并调用 ..%Open(Id)。

无论哪种方式,您甚至可以将生成的计算属性用于索引。

于 2013-06-03T16:25:32.543 回答