Open dushaoshuai opened 1 year ago
MySQL 支持 TIME、DATETIME、TIMESTAMP 值的小数秒,精度可达微秒(6 位数字)。
语法:type(fsp),fsp 是小数秒的精度,取值范围从 0 到 6,0 意味者没有小数秒部分,默认是 0。
type(fsp)
如下先创建一张表:
mysql> CREATE TABLE `fractest` ( -> `t1` TIME(2), -> `t2` DATETIME(3), -> `t3` TIMESTAMP(6) -> ); Query OK, 0 rows affected (0.01 sec)
向表中插入一行记录:
mysql> INSERT INTO `fractest` VALUES ( -> '13:25:45.22', '2000-12-25 13:25:45.227', '2000-12-25 13:25:45.227222'); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM `fractest`; +-------------+-------------------------+----------------------------+ | t1 | t2 | t3 | +-------------+-------------------------+----------------------------+ | 13:25:45.22 | 2000-12-25 13:25:45.227 | 2000-12-25 13:25:45.227222 | +-------------+-------------------------+----------------------------+ 1 row in set (0.00 sec)
可以看到插入的时间值的小数秒部分都被保存下来了。
当插入的时间值的小数秒部分长度超过列所定义的精度时,会导致四舍五入:
mysql> INSERT INTO `fractest` VALUES ( -> '13:25:45.228', '2000-12-25 13:25:45.2274', '2000-12-25 13:25:45.2272225'); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM `fractest` LIMIT 1 OFFSET 1; +-------------+-------------------------+----------------------------+ | t1 | t2 | t3 | +-------------+-------------------------+----------------------------+ | 13:25:45.23 | 2000-12-25 13:25:45.227 | 2000-12-25 13:25:45.227223 | +-------------+-------------------------+----------------------------+ 1 row in set (0.00 sec)
如果打开 TIME_TRUNCATE_FRACTIONAL 模式,多出来的小数部分会被截断。
接受时间值参数的函数也接受带小数秒的时间值。
返回时间值的函数也可返回带小数秒的时间值:
mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2023-03-01 22:49:03 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT NOW(6); +----------------------------+ | NOW(6) | +----------------------------+ | 2023-03-01 22:49:09.583245 | +----------------------------+ 1 row in set (0.00 sec)
MySQL 支持 TIME、DATETIME、TIMESTAMP 值的小数秒,精度可达微秒(6 位数字)。
定义包含小数秒的时间类型列
语法:
type(fsp)
,fsp 是小数秒的精度,取值范围从 0 到 6,0 意味者没有小数秒部分,默认是 0。如下先创建一张表:
向表中插入一行记录:
可以看到插入的时间值的小数秒部分都被保存下来了。
时间值的四舍五入
当插入的时间值的小数秒部分长度超过列所定义的精度时,会导致四舍五入:
如果打开 TIME_TRUNCATE_FRACTIONAL 模式,多出来的小数部分会被截断。
函数中的小数秒
接受时间值参数的函数也接受带小数秒的时间值。
返回时间值的函数也可返回带小数秒的时间值: