1

編集: barnyr のおかげで、平均を秒単位で取得できたので、正しい形式に変換するだけです。残念ながら、Peter が指摘した Coldfusion 関数は datetime オブジェクトしか取りません。

二重の質問があります。Y 人のユーザーがタスクを完了するのにかかった平均時間を生成し、その結果を特定の形式 (x 年 x 月 x 週 x 日 x 時間 x 分 x 秒) で表示する必要があります。

バックエンド データベースは SQL Server 2008 で、Coldfusion 10 を介してクエリを実行しています。どちらの列も日時フィールドです。

クエリは次のとおりです (に似ています)。

SELECT    Started_Date, Completed_Date
FROM      tbl_progress
WHERE     0=0

次に、クエリ結果を繰り返し処理し、Completed_Date と Started_Date (期間) の差を取得し、結果を平均して、上記のように表示する必要があります。

Stackoverflow の別のスレッドから次のコードを取得しましたが、必要な形式の日/時間/分/秒セクションでのみ機能します。

<cfloop query="complete_time">
    <cfset completed = ParseDateTime(complete_time.Completed_Date) />
    <cfset started = ParseDateTime(complete_time.Started_Date) />
    <cfset difference = (completed - started) /> 
    <cfset fixed_diff = Fix(difference) />  
    <cfset days = fixed_diff /> 
    <cfset hours = TimeFormat(difference, "H") /> 
    <cfset minutes = TimeFormat(difference, "m") />  
    <cfset seconds = TimeFormat(difference, "s")/ >
</cfloop>

平均化を行う方法/場所、および必要な形式の年/月/週の値を取得する方法を知る必要があります。日付計算は間違いなく私の得意科目ではありません! ありがとう。

4

2 に答える 2

3

可能であれば、データベースで作業を行います。

SELECT    Started_Date, 
          Completed_Date, 
          DATEDIFF(Second, Started_Date, Completed_Date) AS sec_diff
FROM      tbl_progress

次に、ColdFusion で秒を分、時間などに計算できます。

結果を確認しながら、sec_diff値を合計できます。次に、それらを結果セットの行数で割ります。

クエリの結果を平均化することもできます。SQL のAVG()機能を見てみましょう。

私は SQL サーバーの近くにいませんが、次のものを使用できる可能性があります。

SELECT    Started_Date, 
          Completed_Date, 
          DATEDIFF(Second, Started_Date, Completed_Date) AS sec_diff,
          AVG(DATEDIFF(Second, Started_Date, Completed_Date)) AS average_task_time
FROM      tbl_progress
于 2012-11-30T17:56:10.510 に答える
0

datediff秒数を取得するには、SQLサーバーの関数を使用することをお勧めします。次に、ColdFusion では timeformat を使用せず、計算を行います。 Timeformat()日時オブジェクトを受け取り、文字列を返します。

于 2012-11-30T17:55:02.727 に答える