Mysql 自动获取当前时间,且 timestamp 类型与 datetime 类型的区别

整合 Mysql
阅读数: 1063 2018年10月23日

一、MySQL中如何表示当前时间?

其实,表达方式还是蛮多的,汇总如下:

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP()

NOW()

LOCALTIME

LOCALTIME()

LOCALTIMESTAMP

LOCALTIMESTAMP()


二、TIMESTAMP 和 DATETIME 比较

1、TIMESTAMP和DATETIME的相同点:

1> 两者都可用来表示YYYY-MM-DD HH:MM:SS[.fraction]类型的日期。


2、TIMESTAMP和DATETIME的不同点:

1> 两者的存储方式不一样

对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。

而对于DATETIME,不做任何改变,基本上是原样输入和输出。

(修改时区后就会有不同)


2> 两者所能存储的时间范围不一样

timestamp所能存储的时间范围为:'1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999'。

datetime所能存储的时间范围为:'1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'。


总结:TIMESTAMP和DATETIME除了存储范围和存储方式不一样,没有太大区别。当然,对于跨时区的业务,TIMESTAMP更为合适。



三、关于TIMESTAMP和DATETIME的自动初始化和更新


应用场景:

1、在数据表中,要记录每条数据是什么时候创建的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录创建时间;

2、在数据库中,要记录每条数据是什么时候修改的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录修改时间;



实现方式:

1、将字段类型设为  TIMESTAMP 或 DATETIME

2、将默认值设为  CURRENT_TIMESTAMP



举例应用:


1、MySQL 脚本实现用例

--添加CreateTime 设置默认时间 CURRENT_TIMESTAMP 

ALTER TABLE `table_name`

ADD COLUMN  `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ;


--修改CreateTime 设置默认时间 CURRENT_TIMESTAMP 

ALTER TABLE `table_name`

MODIFY COLUMN  `CreateTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ;


--添加UpdateTime 设置 默认时间 CURRENT_TIMESTAMP   设置更新时间为 ON UPDATE CURRENT_TIMESTAMP 

ALTER TABLE `table_name`

ADD COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ;


--修改 UpdateTime 设置 默认时间 CURRENT_TIMESTAMP   设置更新时间为 ON UPDATE CURRENT_TIMESTAMP 


ALTER TABLE `table_name`

MODIFY COLUMN `UpdateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ;


参考资料
https://www.cnblogs.com/mxwz/p/7520309.html
https://www.cnblogs.com/lhj588/p/4245719.html
phpriji.cn | 网站地图 | 沪ICP备17015433号-1