mysql - 在查询中计算两次之间的差异

kev*_*evi 4 mysql time

我知道我可以使用PHP来做这件事,但想知道是否有办法只使用查询来计算两次之间的差异?我尝试了下面的查询,但它为时差返回NULL.

我表中的数据存储为:

| created    | changed    |
+------------+------------+
| 1333643004 | 1333643133 |
Run Code Online (Sandbox Code Playgroud)

我想弄清楚回归的方法:

| 2012-04-05 09:23:24 | 2012-04-05 09:25:33 |     00:02:09 |
Run Code Online (Sandbox Code Playgroud)

我试过了:

SELECT 
    FROM_UNIXTIME(created) AS created, 
    FROM_UNIXTIME(changed) AS changed, 
    TIMEDIFF ( changed, created ) / 60 AS timediff 
FROM content
    WHERE id = 45;
Run Code Online (Sandbox Code Playgroud)

产生了:

| 2012-04-05 09:23:24 | 2012-04-05 09:25:33 | NULL |
Run Code Online (Sandbox Code Playgroud)

msi*_*man 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;
Run Code Online (Sandbox Code Playgroud)

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