如何设置MySQL Datetime列的默认值?

在SQL Server中是getdate()。MySQL的等价物是什么?我使用MySQL 5。X,如果它是因式。


当前回答

在定义多行触发器时,必须将分隔符更改为分号,MySQL编译器将其作为触发器的结束并生成错误。 如。

DELIMITER //
CREATE TRIGGER `MyTable_UPDATE` BEFORE UPDATE ON `MyTable`
FOR EACH ROW BEGIN
        -- Set the udpate date
    Set new.UpdateDate = now();
END//
DELIMITER ;

其他回答

在定义多行触发器时,必须将分隔符更改为分号,MySQL编译器将其作为触发器的结束并生成错误。 如。

DELIMITER //
CREATE TRIGGER `MyTable_UPDATE` BEFORE UPDATE ON `MyTable`
FOR EACH ROW BEGIN
        -- Set the udpate date
    Set new.UpdateDate = now();
END//
DELIMITER ;

我认为在mysql中很简单,因为mysql的内置函数称为now(),它给出当前时间(插入的时间)。

因此,您的查询应该类似

CREATE TABLE defaultforTime(
    `creation_time`     DATETIME DEFAULT CURRENT_TIMESTAMP,
    `modification_time` DATETIME default now()
);

谢谢你!

如果你试图将默认值设置为NOW(),我认为MySQL不支持。在MySQL中,您不能使用函数或表达式作为任何类型列的默认值,除了TIMESTAMP数据类型列,您可以为其指定CURRENT_TIMESTAMP作为默认值。

这确实是个可怕的消息。这里有一个长期悬而未决的bug/特性请求。该讨论还讨论了时间戳数据类型的限制。

我真的很想知道实现这个东西有什么问题。

MySQL 5.6已经修复了这个问题。

ALTER TABLE mytable CHANGE mydate datetime NOT NULL DEFAULT 'CURRENT_TIMESTAMP'