0

我有一个包含 DATETIME 列的历史记录表。不能在 DATEDIFF 函数中分配变量吗?以下声明:

SET @LASTDATETIME='2000-01-01 00:00:00';
SELECT DATETIME, @LASTDATETIME, TIMEDIFF(DATETIME, @LASTDATETIME:=DATETIME) AS CALC, @LASTDATETIME FROM HISTORY

导致这个结果:

|DATETIME           |@LASTDATETIME       | CALC    | @LASTDATETIME
-------------------------------------------------------------------
2013-01-28 12:11:41 |2000-01-01 00:00:00 |00:00:00 |[BLOB - 19 B]
2013-01-28 12:11:44 |2013-01-28 12:11:41 |00:00:00 |[BLOB - 19 B]

我不明白为什么看起来分配有点像 DATETIME 被结转到下一条记录,但是 CALC 字段失败了,并且在分配之后 @LASTDATETIME 的值是一个 BLOB?为什么这不像我预期的那样工作?

谢谢您的帮助。

4

1 回答 1

0

尝试这个:

SELECT @last AS `last`,
       TIMEDIFF(`datetime`, @last) AS `difference`,
       @last := `datetime` AS `current`
FROM history, (SELECT @last :='2000-01-01 00:00:00') n

这是sqlfiddle

于 2013-02-13T02:52:53.173 回答