龙空技术网

Mysql 中timestamp 和 datetime 类型不同

阳光H 573

前言:

如今兄弟们对“mysqldate与datetime”都比较注重,小伙伴们都需要分析一些“mysqldate与datetime”的相关知识。那么小编也在网上搜集了一些有关“mysqldate与datetime””的相关文章,希望咱们能喜欢,同学们快快来了解一下吧!

今天看到一个问题,关于mysql数据库字段类型, timestamp 和 datetime ,

下面展示下错误和表的结构,如下图:

后来,查了一些网上信息,timestamp的范围是从1970-01-01 到2038-01-19,这也就是为什么上面的生产问题会报错的原因 ,而datetime的时间是没有限制的。

还有其他不同点,总结如下:

.1.timestamp和datetime占用大小不一样。 在v5.6.4之前的版本。datetime占8个字节,timestamp占4个字节。 在这个版本之后datetime和timestamp占用的字节数都有一定程度的减少,并且根据是否有秒的小数的情况,相对应生成浮动大小。

2.timestamp会根据时区的情况进行时间转换,假设当前存储的时区和检索的时区有差异,那么timestamp会根据检索的时区进行转换。 而datetime就不会,datetime是属于你给他什么他就拿到什么,没有timestamp得这个功能。

3.二者存储null时有不同的效果,如果你的时间是datetime那么datetime就会把null存入进去,如果你用的是timestamp,那么timestamp会根据现有的时间帮你插入。对于二者的区别就介绍的差不多了,在我们开发的实际情况中,要根据实际的业务情况去选择时使用timestamp还是datetime,如果没有什么特殊的需求,那就用timedate即可

建议使用timestamp的情况

1.当我们存储时间范围是比较小的时候。

2.当时间精度要求比较高的时候,timestamp可以达到的精度是纳秒级别。

3.需要使用默认值为当前时间的。

建议使用datetime 的情况

1.存储时间范围较大的时间。

2.需要存储时间与时区无关的情况。

转载文章:

标签: #mysqldate与datetime