назначение mysql внутри функции

У меня есть таблица истории со столбцом 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? Почему это не работает, как я ожидаю?

Спасибо за помощь.


person user2053292    schedule 13.02.2013    source источник


Ответы (1)


Попробуй это:

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

person peterm    schedule 13.02.2013
comment
Это работает. Что я на самом деле пытаюсь сделать, так это обновить таблицу на основе DATEDIFF, поэтому, насколько я вижу, мне нужно изменить @last внутри функции. Я пытаюсь обновить столбец с именем трипид, если отметка времени более чем на 10 минут превышает отметку времени в последней записи, трипид увеличивается, в противном случае запись считается частью той же поездки. Вот скрипт: sqlfiddle (надеюсь, это работает, извините, новичок) - person user2053292; 14.02.2013