我正在计算与此论坛相似的列的总时间:
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,
任何帮助都会很棒!谢谢!
答案 0 :(得分: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)。
无论哪种方式,即使对于索引,也可以使用生成的计算属性。