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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值