MYSQL: конвертировать метку времени -> время - PullRequest
4 голосов
/ 02 марта 2011

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

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

... и так далее

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

Проблема: я понятия не имею, как это сделать.Может быть, команда 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: Если у вас есть общая подсказка для меня, глядя на эту таблицу, пожалуйста, скажите мне:).

Ответы [ 4 ]

2 голосов
/ 02 марта 2011

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

date("Y-m-d H:i:s");

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

(напр. "2011-03-02 08:04:32").

2 голосов
/ 02 марта 2011

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

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

2 голосов
/ 02 марта 2011

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

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

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

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

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

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

0 голосов
/ 02 марта 2011
...