重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
设置某字段为当前时间,修改日期类型为timestamp并允许空,如下:
创新互联主要从事成都做网站、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务措美,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
CREATE
TABLE
`test`
(`aaaa`
varchar(50)
NOT
NULL,`createday`
timestamp
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP)
ENGINE=InnoDB
DEFAULT
CHARSET=utf8;
如果是在navicat下操作的话,设置字段的类型为timestamp,默认值写上
CURRENT_TIMESTAMP.
应用场景:
1、在数据表中,要记录每条数据是什么时候创建的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录创建时间;2、在数据库中,要记录每条数据是什么时候修改的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录修改时间;实现方式:
1、将字段类型设为 TIMESTAMP
2、将默认值设为 CURRENT_TIMESTAMP
举例应用:
1、MySQL 脚本实现用例
--添加CreateTime 设置默认时间 CURRENT_TIMESTAMPALTER TABLE `table_name`
ADD COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ;--修改CreateTime 设置默认时间 CURRENT_TIMESTAMPALTER TABLE `table_name`
MODIFY COLUMN `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ;--添加UpdateTime 设置 默认时间 CURRENT_TIMESTAMP 设置更新时间为 ON UPDATE CURRENT_TIMESTAMPALTER TABLE `table_name`
ADD COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ;--修改 UpdateTime 设置 默认时间 CURRENT_TIMESTAMP 设置更新时间为 ON UPDATE CURRENT_TIMESTAMPALTER TABLE `table_name`
MODIFY COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ;2、MySQL工具设置
通过mysql命令行模式下动态修改
show variables like "%time_zone%";
查看时区
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
#time_zone说明mysql使用system的时区,system_time_zone说明system使用CST时区
修改时区
set global time_zone = '+8:00'; ##修改mysql全局时区为北京时间,即我们所在的东8区
set time_zone = '+8:00'; ##修改当前会话时区
flush privileges; #立即生效
在创建表的时候是不支持函数的,而且datetime本身是不支持默认是now()的,必须使用timestamp这个类型,如下:
CREATE
TABLE
blogentries
(
blog_id
INT
(100)
PRIMARY
KEY,
author_id
INT
REFERENCES
author
(author_id),
title
TEXT
NOT
NULL,
description
TEXT,
TYPE
NVARCHAR(10)
NOT
NULL,
allowcomment
CHAR(1)
NOT
NULL,
markprivate
CHAR(1)
NOT
NULL,
body
TEXT
NOT
NULL,
datecreated
TIMESTAMP
,
datepublish
TIMESTAMP
,
datemodified
TIMESTAMP
defAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
)
defAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP就是插入时默认当前时间,更新时更新为当前时间。另外有一个问题就是Mysql目前一个表只支持一个字段有默认当前时间,所以说你的datecreated和datepublish需要在插入函数中处理,例如
insert
blogentries(blog_id,title,datecreated)
values(1,
'help
me',
now());
同理,发表时间也可以用同样的方式插入。
希望能够帮助你。