Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

SQL запрос с сравнением времени.

Даниил Зеликов Ученик (83), закрыт 4 года назад
Помогите пожалуйста. Мне нужно заапдейтить все строки, где время строки + 3 дня стало меньше или равно нынешнему времени
UPDATE `table` SET`col=0` WHERE date + INTERVAL 3 DAY <= NOW();
Вот так пытаюсь, но чё то не получается
Лучший ответ
Андрей Высший разум (425694) 4 года назад
UPDATE `table` SET `col` = 0 WHERE DATE_ADD(`date`, INTERVAL 3 DAY) <= NOW()

date - служебное слово, потому имя столбца date необходимо экранировать.

А вот в `col=0` ты с экранированием переборщил и получил не присваивание, а ПОЛЕ с ИМЕНЕМ `col=0`. В `` берётся ТОЛЬКО имя базы данных, имя таблицы, имя столбца.
Даниил ЗеликовУченик (83) 4 года назад
я для примера написал, вообще у меня выглядит в реале это так)
err := tx.Table("tech_support_themes").
Where("close_by_who=0 && last_mes_author=? && DATE_ADD(last_mes_create_at, INTERVAL? DAY) <= NOW()").
Updates(map[string]interface{}{"close_by_who": 3}).Error

Golang
Даниил ЗеликовУченик (83) 4 года назад
Я Ваш вариант попробовал. В date была дата 2019-07-25 21:19:03, он и её апдейтит.
Даниил ЗеликовУченик (83) 4 года назад
Ну там INTERVAL 3 DAY
Даниил ЗеликовУченик (83) 4 года назад
Это я сглупил. Огромное спасибо! Очень помогли!!!
Остальные ответы
EDGESECTION Гуру (3762) 4 года назад
на каком языке выполняете
обновить `table` поставить `col=0` где date + INTERVAL 3 DAY <= NOW();
`col=0` - `col`='0'
NOW() - функция ЯП?
Даниил ЗеликовУченик (83) 4 года назад
самый обычный mysql. ну понятно же, что col я сделал для примера
EDGESECTION Гуру (3762) вы можете посредством яп выполнять запросы ну так мозги у меня не работают в такое время, так что мне лень разбираться, сорри)
Похожие вопросы