暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL中存储时间最小粒度,时间日期及类型

摘星族 2017-04-28
1765


MySQL可以使用许多类型来保存时间日期和时间值,例如YEAR和DATE。


在MySQL中存储时间的最小粒度是秒。

MySQL提供两种相似的日期类型:DATATIME和TIMESTAMP。对于很多的应用程序,它们都能工作。


DATATIME


这个类型能保存大范围的值,从1001年到9999年。精度为秒,它将日期和时间封装到格式为YYYYMMDDHHMMSS的整数中,与时区无关,使用8个字节存储空间,默认情况下,MySQL以一种可排序的,无歧义的格式显示DATETIME值,例如“2008-01-16 22:37:08”这是ANSI标准定义的日期和时间表示方法


TIMESTAMP


这个类型保存的范围没有DATATIME的范围值大,只能表示从1970年到2038年。也就是从1970年1月1日午夜(格林尼治标准时间)以来的毫秒,它和UNIX时间戳相同,只使用4个字节的存储空间,这显示的值也依赖时区,MySQL服务器,操作系统,以及客户端连接都有时区设置。


如果需要存储比秒更小的粒度的日期和时间值怎么办?


MySQL目前没有提供适合的数据类型,但是可以使用自己的存储格式:可以使用Bigint 类型存储微秒级别的时间戳,或者使用Double存储秒之后的小数部分。这两种方式都可以,或者也可以使用MariaDB替代MySQL。


MySQL提供了FROM_UNIXTIME()函数把Unix时间戳转换为日期,并提供了UNIX_TIMESTAMP()函数把日期转换为Unix时间戳


下来我们来验证一下上面的阐述


使用eclipse输出现在时间的毫秒数:


输出结果为:1493088083331


现在使用mysql输出现在时间的毫秒数:


输出结果为:1493088334


通过输出结果可以看出,eclipse显示时间为毫秒级的,而MySQL输出时间的最小粒度为秒。


END!


Good Luck!!!


文章转载自摘星族,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论