2012-02-22 6 views
1

Я не знаю, ясно ли название, но я попытаюсь объяснить его здесь. У нас есть тысячи записей для нашей базы данных, и в этих таблицах есть пара столбцов datetime. Нам нужно перейти к int с помощью unix_timestamp, но я не могу найти запрос в MySQL, который будет обновлять эти поля.обновить несколько строк с текущими значениями строк mysql

Скажем, у меня есть простая таблица с полем типа, что:

user_table : 
    id : int, 
    name : string, 
    date_joined : datetime; 

Чтобы изменить все эти date_joined подал в междунар я думал, добавив столбец INT и скопировать дату как междунар в новый столбец, то отбросить старый столбец и переименовать мой новый столбец может быть решением. Я построил небольшой скрипт php, и мой скрипт будет делать тысячи запросов MySQL, которые довольно длинные. Мой скрипт будет запускать такие запросы, как:

UPDATE user_table SET date_joined_int=UNIX_TIMESTAMP(date_joined) where id = 1 
... 

Возможно ли это сделать с помощью одного запроса MySQL?

ответ

0

Вы правы, вы должны добавить новый INT столбец

ALTER TABLE user_table ADD date_joined_int INT(11) not null; 

Than конвертировать даты

UPDATE user_table SET date_joined_int = UNIX_TIMESTAMP(date_joined); 

И наконец, удалить date_joined колонку и Ремане date_joined_int к date_joined

0

Вы так близко. Просто оставьте предложение WHERE, чтобы обновить все строки в одном запросе.

UPDATE user_table 
    SET date_joined_int = UNIX_TIMESTAMP(date_joined) 
0

Если вы удалите пункт WHERE, то UPDATE будет применяться ко всем строкам в таблице.

UPDATE user_table SET date_joined_int=UNIX_TIMESTAMP(date_joined) 
+0

это серьезно? hahahahaha, позвольте мне дать ему шанс – David

+0

Если вы думаете, что это весело, просто попробуйте 'DELETE' без предложения WHERE. *злобная ухмылка* –