0

テーブルに日時フィールドがあり、次のようなmysql関数で日付ではなく、異なる時間だけを計算したい:

datetime1 : 2013-04-08 08:30:00
datetime2 : 2013-03-08 08:35:00

と別のサンプル:

datetime1 : 2013-04-08 08:30:00
datetime2 : 2013-04-08 08:20:00

この 2 つのフィールドの時間の違いは、わずか 5 分と -10 分です。このすべてを計算して、この時間の平均を表に表示したいと思います。

どうもありがとう

4

2 に答える 2

3

一般的に言えば、MySQL の関数を使用して、値TIME()の時間部分のみを抽出できます。DATETIME

SELECT TIME(datetime1), TIME(datetime2)

さらにこれを と組み合わせて、TIMEDIFF()そのような 2 つの時間の差を取得できます。

SELECT TIMEDIFF(TIME(datetime2), TIME(datetime1))

ただし、結果はデー​​タ型として表現され、そのTIMEようなデータ型ではどの集計関数も機能しないため、平均を取得することはやや困難です。代わりに、次のハッカーをお勧めします。

SELECT SEC_TO_TIME(AVG(
         UNIX_TIMESTAMP(SUBTIME(datetime2, TIME(datetime1)))
       - UNIX_TIMESTAMP(DATE(datetime2))
       ))
FROM   my_table
于 2013-04-27T08:49:11.517 に答える
2

平均を計算する場合は、UNIX タイムスタンプを使用することをお勧めしますDATETIME

SELECT
  AVG(
    UNIX_TIMESTAMP(datetime2)-UNIX_TIMESTAMP(datetime2)
  ) AS average
FROM tablename

平均を秒単位で表示します。

DATETIME疑似形式にしたい場合は、

SELECT
  CONCAT(
    IF(average<0,"-",""),
    FROM_UNIXTIME(ABS(average))
  ) AS averagedt
FROM (
    -- above query here
)
于 2013-04-27T08:56:37.837 に答える