#mysql #datetime #sql-update
#mysql #datetime #sql-обновление
Вопрос:
У меня есть столбец dtinsert (со старыми значениями>> Тип DATETIME) и столбец dtexpired (без значений>> Тип ДАТЫ). Я хочу обновить столбец dtexpired из значения столбца dtins.
Это SQL-запрос для проверки инструкции. Запрос на обновление не существует:
SELECT DATE_ADD(DATE_FORMAT(dtinsert ,'%Y-%m-%d'), INTERVAL 180 DAY)
FROM usertable
При выполнении инструкции значение в dataset указывается без добавления 180 дней.
Как это исправить?
Спасибо
Комментарии:
1.
select
запросы не изменяют таблицы, точка. вы не можете изменить таблицу безupdate
запроса. все, что делает ваш select, — это изменение ИЗВЛЕЧЕННОГО значения из таблицы. это измененное значение нигде не сохраняется и уничтожается при завершении выполнения запроса / получении результатов.2. Я знаю, что такое хорошее обновление. Мой выбор был примером.
Ответ №1:
Вам нужно в update
таблицу
UPDATE usertable
SET dtexpired = DATE_ADD(dtinsert, INTERVAL 180 DAY)
Вам не понадобится DATE_FORMAT
, поскольку она преобразует a datetime
в строку, тем самым заставляя DATE_ADD
его анализировать ее обратно.
В зависимости от вариантов использования, если вы не планируете обновлять dtinsert
s, вы можете также добавить a WHERE dtexpired is NULL
, чтобы избежать бесполезных обновлений.
Комментарии:
1. Спасибо, мне было доверено использовать date_format. Я стараюсь и работаю нормально.