@utsiye

Как решить задачу?

Таблица. Нужно, чтобы если в колонке created_at, прошло 2 дня, до сегодняшней даты, то писалось в колонке status слово 'yes', а иначе 'no'. Я написал свой вариант, но не понимаю, почему он не работает:
insert into test (status) 
  select if(DATEDIFF(day,(select created_at from test),(select now()))>2,'yes','no');

результат
635cf78ebb598136715491.png
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
@oleg_ods
INSERT - добавляет новую запись в БД.

Исходя из этого рассмотрим Ваш запрос. Вы хотите во время добавления записи обратиться к полю этой записи(которая еще не добавлена кстати) сравнить его с чем-то и в зависимости от результата установить значение другого поля. Похоже на бред, не так ли?

Если нужно в раннее добавленных записях установить значение поля status, то нужно использовать запрос типа UPDATE.

Что то вроде:
UPDATE table_name SET status=‘yes’ WHERE // тут условие с DATEDIFF
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Во-первых, непонятно, при чем тут insert
Во-вторых, колонка status в данном случае вообще не имеет смысла, если ее значение можно вычислить на лету.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы