大连249建站之家免费精品网站自助建设系统平台免费微
首页 >> 技术分享 >>技术干货 >> MySQL datetime数据类型设置当前时间为默认值
详细内容

MySQL datetime数据类型设置当前时间为默认值

环境:MySQL Sever 5.1 + MySQL命令行工具


问题:MySQL datetime数据类型设置当前时间为默认值


解决:


方法一:


由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的。代替的方案是使用TIMESTAMP类型代替DATETIME类型。


TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果有多个TIMESTAMP列,只有第一个自动更新。


自动更新第一个TIMESTAMP列在下列任何条件下发生:


1.列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。


2.列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)


3.你明确地设定TIMESTAMP列为NULL.


4.除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。


所以把日期类型 选择成timestamp 允许空就可以了


CREATE TABLE test ( 


uname varchar(50) NOT NULL, 


updatetime timestamp NULL DEFAULTCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 


) ENGINE=InnoDB DEFAULT CHARSET=utf8; 


如果要在navicat下操作的话,将字段设置为timestamp,然后默认值写上CURRENT_TIMESTAMP即可


方法二:


在MySQL5.0以上版本中也可以使用trigger来实现此功能。


create table test_time ( 


idint(11), 


create_time datetime 


); 


delimiter | 


create trigger default_datetime beforeinsert on test_time 


foreach row 


if new.create_time is null then 


set new.create_time = now(); 


end if;| 


delimiter ;


联系我们
更多

联系电话:0411-66373325

联系地址:大连市沙河口区富民广场

公司邮箱:2058793689@qq.com

备案信息:Copyright © 2016-2025,www.my249.com,All rights reserved

辽ICP备17015910号-1

seo seo