1

このクエリがあります (mySQL コマンドラインで正常に動作します) が、executeQuery を使用して grails で実行すると、次のエラーが表示されます: 時刻の形式が正しくありません

ここに私のgrailsクエリがあります:

def aveTimeToClose = OstFacTicket.executeQuery
("SELECT SEC_TO_TIME(AVG(TIME_TO_SEC(TIMEDIFF(t.closed, t.created)))) as cl " +
"from OstFacTicket t WHERE t.created >= :sdate AND t.created <= :edate AND " +
"t.closed IS NOT NULL", [sdate:start, edate: end])

スタック トレース エラーは次のとおりです。

 Error 2012-05-17 00:09:44,356 [http-bio-8080-exec-9] 
ERROR util.JDBCExceptionReporter
- Bad format for Time '187:22:05' in column 1
| Error 2012-05-17 00:09:44,365 [http-bio-8080-exec-9] ERROR errors.GrailsExceptionResolver  

mySQL コマンドラインで実行すると正常に動作します。

mysql> SELECT SEC_TO_TIME(AVG(TIME_TO_SEC(TIMEDIFF(t.closed, t.created)))) as cl
from ost_fac_ticket t where created > '2011-01-01 08:12:49' AND created < 
'2011-12-31 10:12:49';
+-----------+
| cl        |
+-----------+
| 187:22:05 |
+-----------+

ありがとう、私は助けに感謝します。

4

1 に答える 1

1

mu is too shortの提案に従って、クエリ結果を秒単位で取得し、秒数を groovy を使用して必要な形式に変換することになりました。

基本的 -

def aveTimeToClose = OstFacTicket.executeQuery("SELECT AVG(TIME_TO_SEC(TIMEDIFF(t.closed, t.created))) as cl "+
        "from OstFacTicket t WHERE t.created >= :sdate AND t.created <= :edate AND t.closed IS NOT NULL", [sdate:start, edate: end])

結果の aveTimeToClose は秒単位であり、日時形式に簡単に変換できます。

于 2012-05-18T04:45:57.577 に答える