TIMESTAMP到DATETIME过渡?

时间:2011-08-03 21:02:01

标签: php mysql datetime

如何将TIMESTAMP的列转换为DATETIME并保留日期?我正在使用PHPMyAdmin。

此外,时间戳还可以选择自动填充,有没有办法在DATETIME中这样做?或者我应该每次使用PHP插入它?

感谢

3 个答案:

答案 0 :(得分:1)

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 :(得分:1)

如果此查询

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

Read this
这意味着,例如,您无法将日期列的默认值设置为函数的值,例如 NOW() CURRENT_DATE

答案 2 :(得分:-1)

使用FROM_UNIXTIME()将unix时间戳转换为常规日期时间值。

unix时间戳在mysql中没有本机类型 - 它只是一个整数。 timestamp字段将自动填充,但只有任何给定表中的第一个字段。关于here的详细信息。