4

PHP を使用してこれを行うことができることはわかっていますが、クエリだけを使用して 2 つの時間の差を計算する方法があるかどうかを知りたいですか? 以下のクエリを試してみましたが、時差に対して NULL を返しています。

私のテーブルのデータは次のように保存されます。

| created    | changed    |
+------------+------------+
| 1333643004 | 1333643133 |

私は戻る方法を見つけたかった:

| 2012-04-05 09:23:24 | 2012-04-05 09:25:33 |     00:02:09 |

私は試した:

SELECT 
    FROM_UNIXTIME(created) AS created, 
    FROM_UNIXTIME(changed) AS changed, 
    TIMEDIFF ( changed, created ) / 60 AS timediff 
FROM content
    WHERE id = 45;

結果は次のとおりです。

| 2012-04-05 09:23:24 | 2012-04-05 09:25:33 | NULL |
4

1 に答える 1

8

によって返される結果はTIMEDIFF()、TIME 値に許可されている範囲に制限されます。または、関数 TIMESTAMPDIFF()とのいずれかを使用できます。どちらUNIX_TIMESTAMP()も整数を返します。

UNIX_TIMESTAMP()両方の列 (整数を返す) を呼び出してから、それらを減算します。これにより、クエリまたは PHP で変換できる整数が得られます。

SELECT 
    UNIX_TIMESTAMP(created) AS created, 
    UNIX_TIMESTAMP(changed) AS changed, 
    changed-created AS difference
FROM content
    WHERE id = 45;

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp

于 2012-04-09T02:20:04.637 に答える