4

我知道我可以使用 PHP 来做到这一点,但想知道是否有一种方法可以仅使用查询来计算两次之间的差异?我尝试了下面的查询,但它为时差返回 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 回答