私はこの形式で日付時刻値を含むテーブルを有する:MySQL - どのようにSUM時間ですか?
START
2009年1月13日7時00分○○秒AM
END
1/13/2008 2:57:00 PM
私は 'str to date'関数を使用して、これらを日付/時刻形式に変換します。
どうやってそれらの違いを計算しますか? それから、総時間で表示するように合計します(つまり、週の合計時間は40:53です)。
私はtimediff関数を試していましたが、結果は合計されません。
私はこの形式で日付時刻値を含むテーブルを有する:MySQL - どのようにSUM時間ですか?
START
2009年1月13日7時00分○○秒AM
END
1/13/2008 2:57:00 PM
私は 'str to date'関数を使用して、これらを日付/時刻形式に変換します。
どうやってそれらの違いを計算しますか? それから、総時間で表示するように合計します(つまり、週の合計時間は40:53です)。
私はtimediff関数を試していましたが、結果は合計されません。
UNIX_TIMESTAMP
とSEC_TO_TIME
を参照してください。
あなたは、時間を取得するために(ミリ秒単位になります)、その値を使用して、タイムスタンプの違いをまとめるう:
SELECT SEC_TO_TIME(time_milis/1000)
FROM (
SELECT SUM(UNIX_TIMESTAMP(date1) - UNIX_TIMESTAMP(date2)) as time_milis
FROM table
)
チェックアウトあなたはまた、試みることができるMySQL DateDiff Function
SELECT SUM(DATEDIFF(endtime, starttime))
FROM somerecordstable
WHERE starttime > '[some date]' AND endtime <= '[some date]'
:
SELECT SUM(TIMEDIFF(endtime, starttime))
FROM somerecordstable
WHERE starttime > '[some date]' AND endtime <= '[some date]'
は、私は2番目のものをテストしていませんが、私は最初のものは動作するはずです知っています。
は、これは正しい考えですが、日中にあなたに答えを与えるだろう。 –
ありがとうございます - 特定の週の従業員の合計勤務時間を検索する必要があるため、時間がかかる必要があります。 –
2番目の例は私にあなたに正しい答えを与えるべきである – Jason
SELECT some_grouping_column, SUM(TIMEDIFF(datecol1,datecol2)) as tot_time
FROM my_table
GROUP BY some_grouping_column;
結果は分で返されますか? –
それはhh:mm:ssを返す http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_timediff – dnagirl
使用TIMEDIFF()
。
SUM(TIMEDIFF(end, start))
私はそれが動作...あなたはこのコードを使用する必要があると思います:)
SELECT
SEC_TO_TIME(SUM(TIME_TO_SEC(`time`))) AS total_time
FROM time_table;
私はこれをMySQLで行いましたが、LIMITは別の方法では動作しないので、サブクエリを使ってtmpテーブルを作成しなければなりませんでした。 'select sec_to_time(sum(secs))from(select TIME_TO_SEC(TIMEDIFF(end_time、start_time) id desc limitによって予約注文から10)t; '奇妙です。 – Rudie
ありがとう - 私は日時文字列を秒に変換しました - 差を計算した後、秒を時分に戻します。 –
訂正 - time_to_sec関数は日付部分には適用されません - 時間部分のみに適用されます - したがって2009-08-25 01:06:00 - 2009-08-24 15:35:00負の値になります。 timediff関数を使用する必要があります。 –