2013-02-11 65 views
1

我有一系列记录插入到日志中。每个系列由一个id标识。所以MySQL从第一个和第n个记录获取时间差异

SELECT * FROM log WHERE action_id = x ORDER by created; 

但我想获得第一个记录插入,最后。这些记录具有创建的时间戳。所以我想以秒为单位找到第一张和最后一张唱片的区别。

更新:

我已经试过

SELECT max(created) - min(created) FROM log WHERE action_id = 21 ORDER BY created; 

它返回0.000000

这两个时间差显然是几分钟。

max(created) min(created) 
"2013-02-11 14:30:34" "2013-02-11 14:27:31" 

其存储为DATETIME。引擎是InnoDB。

+0

[你有什么尝试?](http://www.whathaveyoutried.com/)请参阅[问问建议](http://stackoverflow.com/questions/ask-advice),请。 – 2013-02-11 14:37:50

+0

'SELECT max(timestamp) - min(timestamp)'? – 2013-02-11 14:38:11

+0

你可以通过max(时间戳)和第一个分钟(时间戳)和差异通过SELECT max(timestamp) - min(timestamp) – justMe 2013-02-11 14:40:12

回答

1

我猜想created被存储为一个字符串。

试试这个:

select max(cast(created as datetime)) - min(cast(created as datetime)) 

如果你尝试类似:

select '2012-01-01 10:44' - '2012-01-01 10:41' 

你会得到0的MySQL的值转换的串号,2012年停止,然后采取区别。

+0

它存储为DATETIME。引擎是InnoDB。 – madphp 2013-02-11 14:48:22

+0

oohhh好吧,它是一个DATETIME字段,但它不是一个时间戳。现在就试试。 – madphp 2013-02-11 14:49:21

+0

另外,你确定'where'子句选择多行吗? – 2013-02-11 14:50:23

相关问题