欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

选择优化的数据类型 (五)日期和时间类型 博客分类: mysql datetimetimestamp 

程序员文章站 2024-03-16 08:13:04
...

mysql提供了两种相似的数据类型:DATETIME和TIMESTAMP.对于很多应用,它们都能工作,但是在某些情况下,一种会好于另一种

DATETIME:

从1001到9999年,精度为秒。它把日期和时间封装到一个格式为YYYYMMDDHHMMSS的整数中,与时区无关。使用了8字节存储空间。

在默认情况下,mysql以一种可排序的,清楚的格式显示DATETIME值,例如2012-08-28 18:18:18。这种表示日期和时间的方式符合ANSI标准。


TIMESTAMP:

这和时间戳相同,只使用4个字节的存储空间,但它的范围比DATETIME小很多,1970到2038年。mysql提供了FROM_UNIXTIME()函数把Unix时间戳转换为日期,并提供了UNIX_TIMESTAMP()函数,把日期转换为Unix时间戳。


TIMESTAMP显示的值依赖于时区。mysql服务器,操作系统及客户端连接都有时区设置。


在默认情况下,如果插入的行没有定义TIMESTAMP的值,mysql就会把它设置为当前时间。在更新的时候,如果没有显式地定义TIMESTAMP列的值,mysql也会自动更新它。可以配置TIMESTAMP列的插入和更新行为。最后,TIMESTAMP列默认是NOT NULL,这和其他数据类型都不一样。


通常情况下应该使用TIMESTAMP,因为它比DATETIME更节约空间。有时人们把Unix的时间戳保存为整数值,但是这通常没有任何好处。因为这种格式处理起来不太方便。我们并不推荐它。


如果需要以秒以下的精度保存日期和时间?mysql当前没有适合的数据类型,但是可以使用自己的存储格式,可以使用BIGINT类型并且把它以毫秒的精度保存为时间戳格式,或者使用DOUBLE保存秒的分数部分。两种方法都不错。

相关标签: datetime timestamp