Не удалось запрос даты MySQL - PullRequest
0 голосов
/ 05 июля 2011

Я хочу удалить строки из таблицы, столбец которой старше 7200 секунд.

Запрос

mysql_query("delete from logged where DATE_ADD ( log, INTERVAL $this->loginDuration SECOND) < NOW()",$this->link);

где:

name of table = logged; 
name of column = log; 
$this->loginDuration = 7200; 

The value of log in db: 2011-06-25 09:56:51.
Todays date and time [ Now() ] : 2011-07-05 11:39:02

Запрос предназначен для удаления строки со значением журнала 2011-06-25 09:56:51, поскольку он старше 7200 секунд, но не делает этого.

Что я не понимаю?

Ответы [ 2 ]

3 голосов
/ 06 июля 2011

У вас есть пробел между DATE_ADD и круглыми скобками: ( log, ....

Использование DATE_ADD( log, ...

С Документы, функции и операторы MySQL:

Примечание

По умолчанию не должно быть пробел между именем функции и скобка, следующая за ним. это помогает анализатору MySQL различать между вызовами функций и ссылками в таблицы или столбцы, которые происходят с иметь то же имя, что и функция. Тем не менее, пробелы вокруг функции аргументы разрешены.

И

Вы можете указать серверу MySQL принимать пробелы после имен функций начиная с --sql-mode=IGNORE_SPACE опция. (См. Раздел 5.1.6, «Режимы SQL сервера» .) Индивидуальные клиентские программы могут запросить это поведение с помощью CLIENT_IGNORE_SPACE опция для mysql_real_connect () . В любом случае, все имена функций становятся зарезервированными слова.

0 голосов
/ 05 июля 2011

Я хотел показать вам, что я сделал (не могу опубликовать это как комментарий)

+----------------------+
| temp.d(table.column) |
+----------------------+
| 2011-07-05 22:08:20  |
| 2011-07-05 22:08:20  |
| 2011-07-05 22:08:21  |
| 2011-07-05 22:08:21  |
| 2011-07-05 22:08:22  |
| 2011-07-05 22:08:22  |
| 2011-07-05 22:08:23  |
| 2011-07-05 22:08:23  |
| 2011-07-05 22:08:24  |
| 2011-07-05 22:08:24  |
+----------------------+

10 строк в наборе (0,00 с)

mysql> delete from temp where DATE_ADD(d, INTERVAL 1 SECOND) < NOW();

Запрос в порядке, затронуто 10 строк (0,01 с)

...