11.2.7 时间值的小数秒
MySQL 支持TIME,DATETIME和TIMESTAMP值的小数秒,精度高达微秒(6 位):
CREATE TABLE t1 (t TIME(3), dt DATETIME(6));
fsp
*的值(如果给定)必须在 0 到 6 的范围内。0 的值 table 示没有小数部分。如果省略,则默认精度为 0.(这与标准 SQL 默认值 6 不同,以便与以前的 MySQL 版本兼容.)
CREATE TABLE fractest( c1 TIME(2), c2 DATETIME(2), c3 TIMESTAMP(2) );
INSERT INTO fractest VALUES
('17:51:04.777', '2018-09-08 17:51:04.777', '2018-09-08 17:51:04.777');
时间值通过四舍五入插入 table 中:
mysql> SELECT * FROM fractest;
+-------------+------------------------+------------------------+
| c1 | c2 | c3 |
+-------------+------------------------+------------------------+
| 17:51:04.78 | 2018-09-08 17:51:04.78 | 2018-09-08 17:51:04.78 |
+-------------+------------------------+------------------------+
舍入时不发出警告或错误。此行为符合 SQL 标准,并且不受服务器sql_mode设置的影响。
-
带有时间参数的函数接受小数秒后的值。时间函数的返回值包括适当的小数秒。例如,不带参数的NOW()返回不带小数部分的当前日期和时间,但采用 0 到 6 之间的可选参数来指定返回值包括该位数的小数秒部分。
-
时间 Literals 的语法产生时间值:
DATE 'str'
,TIME 'str'
和TIMESTAMP 'str'
,以及 ODBC 语法等效项。如果指定,结果值将包含尾随的小数秒部分。以前,暂时类型关键字被忽略,这些构造产生了字符串值。见标准 SQL 和 ODBC 日期和时间 Literals