一.DateTime类型
1,特点
1)以YYYY-MM-DD HH:MM:SS[.fraction]格式存储日期时间,在mysql5.6前可以只能存储到秒,在5.6后能存储到微秒
2)datetime类型与时区无关,占用8个字节的存储空间
3)时间范围公元1000-01-01 00:00:00到9999-12-31 23:59:59,存储的时间范围非常广
二.timestamp类型
1.特点:
1)存储了由格林尼治时间1970年1月1日到当前时间的秒数,即时间戳, 以YYYY-MM-DD HH:MM:SS.[.fraction]的格式显示,占用4个字节,实际上是以int类型来存储的
2)时间范围1970-01-01到2038-01-19
3)timestamp类型显示依赖于所指定的时区
4)在行的数据修改时可以自动修改timestamp列的值 ,这个功能非常的有用,在本行的任何数据被修改时,都会自动修改这个时间,经常使用这个功能来标识每行最后被修改的时间,需要注意的是,如果一张表中有两个列是timestamp,那默认情况下只有第一列会自动更新,其他列不会
三.演示
1.关于时区的区别
1)首先在一张表中,存储两个列的值,第一列是datetime类型,第二列是timestamp类型,用相同时区存进去
2)修改当前数据库的时区,再次查询
3)结论:第一列的时间没有随着时区的变化而变化,第二列就变了,说明datetime与时区无关,timestamp会随着时区的变化而变化
四.date类型
1.特点
1)只能存储日期,不能存储时间
2)占用的字节数比使用字符串(8个字节),datetime(8个字节),int(4个字节) 存储要少,使用date类型只需要3个字节
3)使用date类型还可以利用日期时间函数进行日期之间的计算
4)存储的时间范围:公元1000-01-01到9999-12-31之间的日期
五.time类型
用于存储时间的数据,格式为HH:MM:SS
六.注意事项
1.不要使用字符串类型来存储日期时间的数据
理由:
1)日期时间类型通常比字符串占用的存储空间小
2)日期时间类型在进行查找过滤时可以利用日期来进行对比
3)日期时间类型还有着丰富的处理函数,可以方便的对日期类型进行日期的计算