2
Name|| day||ActivityDate ||TimeIn  || TimeOut ||
Ade || 20 || 2013-08-20 || 10:06:09 || 18:21:03 ||
Ade || 21 ||2013-08-27  || 11:00:34 || 18:06:56 ||
Ade || 22 || 2013-08-28 || 09:56:29 || 17:59:56 ||

これは私のクエリです:

select 
tot=sum(DATEDIFF(hh ,TimeIn ,TimeOut )) as TotalHourAndMinute
from report

そしてエラー:

1582 - ネイティブ関数 'DATEDIFF' への呼び出しのパラメーター数が正しくありません

これはデータ可能な私のテーブルです.TimeOut-TimeInのような合計時間を取得する方法がわかりません..

参考までに、このテーブルにはたくさんのデータがあります..この3つだけではありません..

私はあなたたちが明確であることを願っています...

Name|| day||ActivityDate ||TimeIn  || TimeOut   || TotalHourAndMinute
Ade || 20 || 2013-08-20 || 10:00:00 || 18:30:00 ||   8.5
Ade || 21 ||2013-08-27  || 11:00:34 || 18:06:56 ||   7.something
Ade || 22 || 2013-08-28 || 09:56:29 || 17:59:56 ||   7.something

こうなってほしい..

アップデート

4

3 に答える 3

1

MySQL を使用している場合、関数の正しい形式は次のとおりです。

DATEDIFF(expr1,expr2)

の詳細についてはDATEDIFFこちらをご覧ください。また、MySQL で利用可能なすべての時間関数はこちらにあります。

ただし、2 つの日付の時間差を確認したい場合は、 を使用しますTIME_DIFF

TIMEDIFF(expr1,expr2)

TIME_DIFF ここについてのドキュメント。

ただし、厳密には、次のようにクエリを記述する必要があります。

SELECT tot = sum(HOUR(TIMEDIFF(TimeIn, TimeOut))) AS TotalHourAndMinute
FROM report

アップデート:

今、あなたの質問を更新した後、私はあなたが何を望んでいるのか理解しています。

使用する必要があるクエリは次のとおりです。

SELECT 
      NAME, 
      DAY, 
      ActivityDate, 
      SUM(TIMEDIFF(TimeOut, TimeIn)) as TotalHourAndMinute
FROM REPORT
WHERE (TimeOut IS NOT NULL) AND (TimeIn IS NOT NULL)
GROUP BY NAME, DAY, ActivityDate
于 2013-09-06T09:48:15.413 に答える
0

使用する:

SELECT HOUR(TIMEDIFF(TimeOut,TimeIn)) AS hour from report;

詳細については、このサイトをご覧ください。

于 2013-09-06T09:50:24.250 に答える
0

時間値を集計すると、秒単位で結果が得られます。これを時間に戻すには、 を呼び出しますSEC_TO_TIME。これにより、以下が得られます。

SELECT
    SEC_TO_TIME(SUM(TIMEDIFF(TimeOut, TimeIn))) AS TotalHourAndMinute
FROM
    report
于 2013-09-06T09:59:45.897 に答える