2012-09-04 120 views
0

我期待从类似这样的论坛列计算总时间:CacheSQL计算总时间

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

您是否收到错误#5540:SQLCODE:-359消息:用户定义的SQL函数'SQLUSER.SEC_TO_TIME'不存在?因为SEC_TO_TIME没有内置到缓存中。如何包括你的整个查询以及你想要做什么? – psr

回答

1

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

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

现在你只需要编写SomeClassMethod。它可以继续任何包含%Open的ObjectScript代码,只是不要使其成为循环。如果你只需要一些其他领域,使之,你可以这样说:

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

在那里,你将获得属性作为输入你的类的方法,而不是获取ID,并呼吁..%开放(ID)。

无论使用哪种方式,您都可以使用结果计算的属性,即使对于索引。