介绍
本文将介绍在mysql数据库中添加时间戳的方法以及相关的使用方法
mysql中的两种时间戳
mysql中存在两种关于时间的数据类型
类型 | 数据格式 |
---|---|
date | ‘2000-01-01’ |
datetime | ‘2000-01-01 12:00:00’ |
time | ‘12:00:00’ |
year | ‘2000’ |
可以看到,data和datatime 的区别只有时间戳的精度不一样,因此我们可以根据需求来选择。
1.datetime时间戳
现在我们尝试一下用datetime来建表
/*datetime建表测试*/
drop table if exists t_test01_timeflag;
create table t_test01_timeflag
(
id bigint auto_increment ,
timeflag datetime,
primary key(id)
);
/*插入语句*/
insert into t_test01_timeflag (timeflag) values('2008-01-01 12:00:00');
insert into t_test01_timeflag (timeflag) values('2008-01-01 12:00:01');
insert into t_test01_timeflag (timeflag) values('2008-01-01 12:00:02');
insert into t_test01_timeflag (timeflag) values('2008-01-01 12:00:03')
2.date时间戳
现在我们采用date来建表
/*datetime建表测试*/
drop table if exists t_test01_timeflag02;
create table t_test01_timeflag02
(
id bigint auto_increment ,
timeflag date,
primary key(id)
);
/*插入语句*/
insert into t_test01_timeflag02 (timeflag) values('2008-01-01');
insert into t_test01_timeflag02 (timeflag) values('2008-01-02');
insert into t_test01_timeflag02 (timeflag) values('2008-01-03');
insert into t_test01_timeflag02 (timeflag) values('2008-01-04');
测试结果:
由此可以看出两种数据类型的区别,而time和year的建表语句也是同理
注意事项
1.只多不少原则
需要注意的是:异类时间数据类型转换遵循“只多不少”的原则,如果表结构是date,插入datetime的时候,会损失精度,也就是说后面的’12:00:00’会被忽略;如果表的结构是datetime,插入date的时候,就会报错,因为精度不够,只知道那一天的时间,而后面具体到几点是不知道的,所以不可以进行转换。这一点和数据类型转换的思路是一致的,time year等时间数据类型在转换的时候也遵循这个原则。
2.忽略前导0
举个例子:
insert into t_test01_timeflag02 (timeflag) values('2008-01-01');
insert into t_test01_timeflag02 (timeflag) values('2008-1-1');
这两种增添数据的结果都是一样的,最后查询出来的数据都是'2008-01-01'