300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > MySQL中date datetime timestamp time year的区别

MySQL中date datetime timestamp time year的区别

时间:2020-08-30 13:22:36

相关推荐

MySQL中date datetime timestamp time year的区别

前言

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME、YEAR

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

时间类型

精度处理

时间精度定义

定义支持小数点精度的长度为6位(最大支持6位精度)

CREATE TABLE `test` (`date` date DEFAULT NULL,`datetime` datetime(6) DEFAULT NULL,`timestamp` timestamp(6) NULL DEFAULT NULL,`time` time(6) DEFAULT NULL,`year` year(4) DEFAULT NULL)

时间精度插入

插入2位,小于定义的6位,默认对缺失位补零

INSERT INTO test (DATETIME) VALUES (‘-04-01 10:10:10.12’)

插入6位,等于定义的6位,插入正常

INSERT INTO test (DATETIME) VALUES (‘-04-01 10:10:10.123456’)

插入9位,大于定义的6位,插入异常

INSERT INTO test (DATETIME) VALUES (‘-04-01 10:10:10.123456789’)

当插入时间精度时,可以按照设定的精度进行插入,不要超过精度设置否则会出现异常问题,或者可以直接使用mysql函数now()配合精度来获取时间,如now(6)

总结

time、datetime、timestamp都支持小数点0~6的精度,year、date记录的是年份、年月日,因此不支持小数点时间精度datetime、timestamp都可以用来记录年月日时分秒,也支持最大6位的小数点精度,但是timestamp占用4字节存储范围较小,从系统长久使用、健壮性以及后续维护成本来说不建议使用该类型来记录时间,datetime占用8字节存储范围较大,一般我们采用datetime来进行时间数据存储,能满足大部分业务场景对时间范围、精度的最大要求

参考

MySQL TIMESTAMP 时间精度问题

MySQL Date and Time Data Type Representation

MySQL 数据类型

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。