如何将TIMESTAMP的列转换为DATETIME并保留日期?我正在使用PHPMyAdmin。
此外,时间戳还可以选择自动填充,有没有办法在DATETIME中这样做?或者我应该每次使用PHP插入它?
感谢
答案 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的详细信息。