2012-09-04 181 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)。

無論使用哪種方式,您都可以使用結果計算的屬性,即使對於索引。