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

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


当前回答

可以解析默认时间戳。首先考虑你使用的字符集,例如,如果你使用utf8,这个字符集支持所有语言,如果你使用laten1,这个字符集只支持英语。下一步,如果您在任何项目下工作,您应该知道客户端时区,并选择您所在的客户端时区。此步骤是强制执行的。

其他回答

您可以使用now()来设置datetime列的值,但请记住,不能将其用作默认值。

这是我的触发器示例:

/************角色************/ 删除存在' 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();

使用以下代码

DELIMITER $$

    CREATE TRIGGER bu_table1_each BEFORE UPDATE ON table1 FOR EACH ROW
    BEGIN
      SET new.datefield = NOW();
    END $$

    DELIMITER ;

如果我有一个名为“site”的表,其中created_at和update_at列都是DATETIME,并且需要现在的默认值,我可以执行以下sql来实现这一点。

ALTER TABLE `site` CHANGE `created_at` `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

ALTER TABLE `site` CHANGE `created_at` `created_at` DATETIME  NULL DEFAULT NULL;

ALTER TABLE `site` CHANGE `updated_at` `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

ALTER TABLE `site` CHANGE `updated_at` `updated_at` DATETIME NULL DEFAULT  NULL;

语句序列很重要,因为一个表不能有两个TIMESTAMP类型的列,且默认值为CUREENT TIMESTAMP

可以解析默认时间戳。首先考虑你使用的字符集,例如,如果你使用utf8,这个字符集支持所有语言,如果你使用laten1,这个字符集只支持英语。下一步,如果您在任何项目下工作,您应该知道客户端时区,并选择您所在的客户端时区。此步骤是强制执行的。