MYSQL: конвертировать временную метку -> время

У меня есть эта таблица MYSQL:

[ID] [TIMESTAMP] [TIME] [1] [2010-05-29 01:17:35] [] [1] [2010-05-29 01:23:42] [] 

… и так далее

Теперь мне нужно скопировать значение TIMESTAMP в строки TIME. Новые строки TIME создаются с помощью команды PHP time ();

Проблема: я понятия не имею, как это сделать. Может быть, iwht команда MySQL, может быть, через PHP? Пожалуйста, помогите мне!

Мой стол:

 CREATE TABLE `comments` ( `id` int(10) unsigned NOT NULL auto_increment, `ip` int(10) unsigned NOT NULL, `name` varchar(40) NOT NULL, `comment` text NOT NULL, `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `email` varchar(30) NOT NULL, `time` int(100) NOT NULL, PRIMARY KEY (`id`), KEY `news_id` (`m0arid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=17198 ; 

Цель. Я хочу удалить отметку времени. Время лучше, как я вижу.

PS: Если у вас есть общий намек на меня, глядя на этот стол, пожалуйста, скажите мне :).

Вы можете переключаться между датами и временными метками Unix (не путайте с типом столбца TIMESTAMP MySQL) с помощью следующих функций:

  • UNIX_TIMESTAMP ()
  • FROM_UNIXTIME ()

Что касается вашей таблицы, то я мало использую для хранения дат как целых чисел. Вы не можете выполнять расчет даты (или даже показывать как дату) без предварительного преобразования. Кроме того, временные метки Unix в PHP не являются чрезвычайно переносимыми: некоторые платформы даже не позволяют хранить даты до 1970 года …

Если вы планируете хранить временную метку unix даты в своем столбце времени, как это предлагается по типу ( int(100) ), это совершенно не имеет смысла.

Внутренне столбцы Timestamp хранятся в MySQL как временная метка Unix. Следующая цитата (из http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_unix-timestamp ):

Когда UNIX_TIMESTAMP () используется в столбце TIMESTAMP, функция возвращает внутреннее значение временной отметки, без какого-либо неявного преобразования «string-to-Unix-timestamp».

доказывает мою точку зрения.

Результат, который вы видите, когда вы делаете запрос, – это просто MySQL, который пытается распечатать информацию.

Я предлагаю сохранить столбец timestamp и использовать UNIX_TIMESTAMP(timestamp) в ваших запросах, когда вам действительно нужно значение как временная метка.

Я бы рекомендовал использовать функцию PHP date () вместо time (). Измените свой атрибут «время» в базе данных MySQL на тип данных datetime . Где бы вы ни находились в своем php, где вам нужно записать время, используйте:

 date("Ymd H:i:s"); 

Это приведет к созданию строки, которая точно соответствует формату типа данных datetime MySQL.

(например, «2011-03-02 08:04:32»).