#mysql
#mysql
Вопрос:
Я хочу случайным образом обновить много полей в таблице MySQL, и мне нужно обновить два поля, одно с использованием метки времени unix, а другое — даты. Например, это то, что я бы использовал для метки времени unix:
UPDATE `video` SET addtime= 1264982424 (1355555555-1264982400)*RAND()
Это должно обновлять addtime случайным образом. Однако в таблице есть другое поле, которое называется adddate, и в нем используется mysql date. Что я могу сделать, чтобы написать addtime в Unix, который согласуется с adddate? Я немного новичок в MySQL.
Спасибо!
Ответ №1:
ОТРЕДАКТИРОВАНО:
Если вам нужно синхронизировать поле adddate с полем addtime, вы могли бы вставить триггер, подобный этому:
CREATE TRIGGER upddate BEFORE UPDATE
FOR EACH ROW BEGIN
UPDATE video SET NEW.adddate=FROM_UNIXTIME(NEW.addtime);
END;
Комментарии:
1. Но это не делает addtime таким же, как adddate, я думаю, и если это так, пожалуйста, объясните мне, почему 🙂 Похоже, что addtime может быть любым случайным числом, а adddate может быть совершенно иной датой, чем это время.
2. @luquita: вы имеете в виду, что хотите
addtime
представить время, проведенное вadddate
? Итак, вы устанавливаетеaddtime
случайное значение, а затем создаете представление даты этого времени? Если это так, возможно, from-unixtime — это то, что вам нужно. Хотя это кажется странным.3. @luqita: Я действительно не понял вашего вопроса. Если вам нужно то, что сказал @Mike в комментарии выше, делайте то, что он там говорит. Наоборот, объясните, что вам нужно.
4. @luqita: если мой ответ неверен, потому что ваш вопрос отличается, я собираюсь удалить его.
5. @luqita, @Mark: взгляните на мой отредактированный пост. Это то, что вам нужно?
Ответ №2:
Как насчет этого?
UPDATE video
SET addtime = 1264982424 (1355555555-1264982400)*RAND(),
adddate = FROM_UNIXTIME(addtime)
Комментарии:
1. Вы уверены, что
adddate
это будет синхронизировано с новым временем (после RAND и )? Я думаю, что для него будет установлено старое addtime… Поправьте меня, если я ошибаюсь, пожалуйста!2. Спасибо… Я использовал FROM_UNIXTIME (addtime), но после выполнения первого запроса. Как только я произвольно распределил все addtimes, я выполнил adddate = FROM_UNIXTIME(addtime), чтобы даты соответствовали addtime.
3. Да, это тоже хорошо, если вам не нужно обновлять их время от времени, только один раз.
4. @luqita,@vbence: не думаете ли вы (luqita), что триггер — лучшее решение? Таким образом, каждый раз, когда вы обновляете addtime, у вас синхронизируется adddate…
5. @vbence: для меня удивительно, что ваш запрос работает!! Приятно знать, я всегда узнаю что-то новое, посещая этот веб-сайт: D