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

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


当前回答

虽然你不能在默认定义的DATETIME中这样做,你可以简单地在插入语句中合并一个选择语句,就像这样:

INSERT INTO Yourtable (Field1, YourDateField) VALUES('val1', (select now()))

请注意,桌子周围没有引号。

MySQL 5.5

其他回答

对于那些试图在MySQL中设置默认DATETIME值而失去信心的人,我确切地知道你的感受。这就是:

ALTER TABLE  `table_name` CHANGE `column_name` DATETIME NOT NULL DEFAULT 0

仔细观察,我没有在0周围添加单引号/双引号

解完这个题,我真的跳了起来,D

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

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

这是我的触发器示例:

/************角色************/ 删除存在' role '的表; 创建表' role ' ( bigint(20) unsigned not null auto_increment date_created datetime, date_deleted datetime, ' name ' varchar(35)不是空的, “描述”文本, 主键(' id_role ') )评论= "; 如果role_date_created存在,删除触发器; 在插入之前创建触发器' role_date_created ' “角色” 对于每一行 新设置。' date_created ' = now();

对于所有使用TIMESTAMP列作为解决方案的人,我想从手册中提出以下限制:

http://dev.mysql.com/doc/refman/5.0/en/datetime.html

TIMESTAMP数据类型的范围是'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07' UTC。它具有不同的属性,这取决于MySQL版本和服务器运行的SQL模式。这些属性将在本节后面描述。”

这显然会在28年内破坏你的软件。

我认为数据库方面的唯一解决方案是使用其他答案中提到的触发器。

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