首页 / MySQL / 正文

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

10327 发布于: 2018-01-16 读完约需6分钟

[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'

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: .NET[C#]使用LINQ从List<T>集合中获取最后N条数据记录的方法有哪些?

下一篇: [MySQL]MySQL数据库中如何查询出所有包含指定的一个或者多个字段名(列名)的数据表集合?

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

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册