号外号外: 原[图享网]更名为 码友网(codedefault.com) 啦,感谢大家一路上的陪伴与支持。代码的世界里,码友网与大家一起同行!

[MySQL]MySQL数据库中如何为日期类型(Datetime)的字段(列)设置当前时间为默认值?

MySQL 作者: Rector 818阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

[MySQL]MySQL数据库中如何为日期类型(Datetime)的字段(列)设置当前时间为默认值?

问题描述

如题,在MySQL数据库中,如何为日期类型(Datetime)的字段(列)设置当前时间为默认值?
我们知道,在SQL Server数据库中,可以使用 GETDATE() 函数来设置某个字段(列)的默认当前时间,那么,在MySQL数据库如何实现呢?

方案一

在MySQL 5.6.5 版本的数据库中,可以使用 CURRENT_TIMESTAMP 来设置默认值为当前数据库服务器时间,具体请看示例:

mysql> create table test (str varchar(32), ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.00 sec)

mysql> desc test;
+-------+-------------+------+-----+-------------------+-------+
| Field | Type        | Null | Key | Default           | Extra |
+-------+-------------+------+-----+-------------------+-------+
| str   | varchar(32) | YES  |     | NULL              |       | 
| ts    | timestamp   | NO   |     | CURRENT_TIMESTAMP |       | 
+-------+-------------+------+-----+-------------------+-------+
2 rows in set (0.00 sec)

mysql> insert into test (str) values ("demo");
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+------+---------------------+
| str  | ts                  |
+------+---------------------+
| demo | 2008-10-03 22:59:52 | 
+------+---------------------+
1 row in set (0.00 sec)

mysql>

方案二

甚至,你还可以为更新时的列设置当前更新时间,具体SQL语句如下:

CREATE TABLE foo (
    `creation_time`     DATETIME DEFAULT CURRENT_TIMESTAMP,
    `modification_time` DATETIME ON UPDATE CURRENT_TIMESTAMP
)

方案三

除了使用 CURRENT_TIMESTAMP 关键字外,我们还可以使用 TRIGGER 触发器来设置,具体SQL语句示例:

CREATE TABLE `MyTable` (
`MyTable_ID`  int UNSIGNED NOT NULL AUTO_INCREMENT ,
`MyData`  varchar(10) NOT NULL ,
`CreationDate`  datetime NULL ,
`UpdateDate`  datetime NULL ,
PRIMARY KEY (`MyTable_ID`)
)
;

CREATE TRIGGER `MyTable_INSERT` BEFORE INSERT ON `MyTable`
FOR EACH ROW BEGIN
        -- Set the creation date
    SET new.CreationDate = now();

        -- Set the udpate date
    Set new.UpdateDate = now();
END;

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

方案四

当我们为已经存在的数据表字段(列)设置默认值为当前时间时,可以使用如下SQL语句:

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

阅读了该文章的人还浏览了...

本文永久链接码友网 » [MySQL]MySQL数据库中如何为日期类型(Datetime)的字段(列)设置当前时间为默认值?

发布于: 2018-01-16 10:23:54
分享扩散:

文章评论

获取验证码