2013-06-11 2 views
1

У меня есть простая проблема, для которой я нашел решение в раннем тестировании, но не могу сейчас реплицироваться, что мне нужно сделать это по-настоящему.MySQL создает поле Datetime из поля Timestamp

Мы переводим нашу новостную систему с CuteNews в нашу самонастраиваемую систему MySQL. Все новости были импортированы в базу данных, но поле даты - Timestamp. Я создал новое поле (created_date) и хочу заполнить это из метки времени в поле даты.

Как я уже сказал, я делал это ранее в раннем пробном прогоне и был убежден, что запрос, который я использовал, через PhpMyAdmin был по строкам UPDATE News set created_date=UNIX_TIMESTAMP(date). Вероятно, это немного неправильно, поскольку я нахожусь на работе и размещаюсь с телефона, но это было именно так.

Ошибок не было, но все поля 'created_date' были заполнены как 0000-00-00 00:00 не с датой, взятой из метки времени в поле даты.

Я знаю, что это просто и знаю, что ответ будет очевиден, когда я его увижу, но любые указатели будут с благодарностью оценены!

Steve.

EDIT: чтение назад я понял, что то, что я разместил, может ввести в заблуждение. В моем первоначальном пробном прогоне с использованием запроса на обновление поместите правильное DateTime в поле на основе соответствующего поля Timestamp. Только на этот раз он показывает 0000-00-00 00:00.

Ps. Спасибо за форматирование. Это немного неудобно на телефоне!

+0

Какое поле ТИП 'created_date'? – itsols

+0

Похоже, что MySQL считает, что данные в ваших столбцах _date_ недопустимы, поэтому они преобразуют их в '0000-00-00 00: 00: 00'. Вы уверены, что они действительны? Я быстро взглянул на [документацию по MySQL] (http://dev.mysql.com/doc/refman/5.1/en/datetime.html) на типы данных даты, и в комментариях есть замечания по добавлению 'INTERVAL 0 DAY' к недействительным датам, чтобы автоматически сделать их действительными - возможно, что-то попробовать. Я ** надеюсь, что вы экспериментируете с запросом 'SELECT', прежде чем пытаться с помощью' UPDATE' :-) – nurdglaw

+0

created_date - это поле DateTime. –

ответ

0

Я знал, что был почти там! Это не было UNIX_TIMESTAMP, но FROM_UNIXTIME Я был после.

UPDATE news SET created_date = FROM_UNIXTIME(date) 

Спасибо за помощь.

Steve

Смежные вопросы