选择优化的数据类型 (五)日期和时间类型

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保存秒的分数部分。两种方法都不错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值