datetime与datestamp都是日期和时间的混合类型,它们之间的区别如下:
1、表示的取值范围不同,datatime的取值范围远远大于datestamp的取值范围
2、将NULL值插入到timestamp字段后,该字段的值实际上是MySQL服务器当前的日期和时间。
3、对于同一个timestamp类型的日期或时间,不同的时区显示结果不同。使用MySQL命令“ show variables like ‘time_zone';可以查看当前MySQL服务实例的时区,如图,”SYSTEM“表示MySQL时区与服务器主机的操作系统的时区一致。
4、当对包含timestamp数据的记录进行修改时,timestamp数据将自动更新为MySQL服务器当前的日期和时间。
场景描述datetime与datestamp的区别
1、 由于系统变量time_zone是会话系统变量,因此,下述MySQL代码要求在同一个MySQL会话中执行。使用create table语句在choose数据库中创建today表,执行结果是:“
use choose;
Create table today;
(
T1 datetime,
T2 datestamp
);
2、 插入insert语句
Insert into today values (now (), now ());
Insert into today values (now (null,null));
3、 首先查看当前MySQL服务实例的时区,然后使用select语句查询today表的所有记录;接着使用set time_zone=’+12:00’;命令临时地将时区设置为新西兰时区,即东12区,再次查看当前MySQL服务器实例时区,最后使用select语句查询today表的所有记录。
4、 Show variables like ‘time_zone’;
Select * from today;
Set time_zone=’+12:00’;
Show variables like ‘time_zone’;
Select * from today;
结果:datetime字段中插入null值后,该字段的值就是null值。在timestamp字段插入null值后,该字段的值是MySQL服务器当前的日期。时区修改前后,t1字段的时区没有发生变化,然而t2字段的时间增加了4h,也就是说datetime字段的值不受时区的影响,而timestamp字段的值受到时区影响。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29272216/viewspace-1243727/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29272216/viewspace-1243727/