TIMESTAMP для перехода на DATETIME? - PullRequest
2 голосов
/ 04 августа 2011

Как я могу преобразовать столбец с TIMESTAMP в DATETIME и сохранить даты?Я использую PHPMyAdmin.

Также у метки времени была возможность автозаполнения, есть ли способ сделать это в DATETIME?Или я должен вставлять его каждый раз с PHP?

спасибо

Ответы [ 3 ]

1 голос
/ 04 августа 2011
ALTER TABLE tablename MODIFY COLUMN columnname DATETIME;

(сначала проверить тестовую таблицу ...)

Нет способа установить по умолчанию текущее время, сохраненное для триггеров:

  DELIMITER $
  CREATE TRIGGER tablename_before_insert BEFORE INSERT ON tablename
  FOR EACH ROW 
  BEGIN
    IF NEW.columnname IS NULL THEN
      SET NEW.columnname = NOW();
    END IF;
    IF NEW.datum = '0000-00-00 00:00:00' THEN
      SET NEW.columnname = NOW();
    END IF;
  END$
  DELIMITER ;
1 голос
/ 04 августа 2011

Если этот запрос

ALTER TABLE table CHANGE `time` `time` datetime

потеряет даты, вы можете создать новый столбец, затем присвоить старые значения, затем удалить старый и переименовать новый

ALTER TABLE table ADD `datetime` datetime AFTER `time`;
UPDATE table set datetime=time;
ALTER TABLE table DROP datetime;
ALTER TABLE CHANGE `datetime` `time` datetime

Читать это :
Это означает, например, что вы не можете установить по умолчанию для столбца даты значение функции, например NOW () или CURRENT_DATE .

0 голосов
/ 04 августа 2011

Используйте FROM_UNIXTIME() для преобразования метки времени Unix в обычное значение даты и времени.

Метка времени Unix не имеет собственного типа в mysql - это просто целое число.timestamp поля будут заполняться автоматически, но только в первой таблице.Подробнее об этом здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...