10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册(TGZ)- 262.2 kb
手册(Zip)- 372.3 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

11.2.6时间值中的小数秒

MySQL支持小数秒时间DATETIME,时间戳值,精确到微秒(6位数字):

  • 要定义包含小数秒部分的列,请使用语法type_namefsp,在那里type_name时间DATETIME,或时间戳,fsp是分数秒精度。例如:

    CREATE TABLE t1 (t TIME(3), dt DATETIME(6));

    fsp值,如果给定,则必须在0到6之间。值为0表示没有小数部分。如果省略,默认精度为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');

    时态值被四舍五入地插入到表中:

    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标准。

    要插入具有截断功能的值,请启用TIME_TRUNCATE_FRACTIONALSQL模式:

    SET @@sql_mode = sys。list_add (@@sql_mode TIME_TRUNCATE_FRACTIONAL);

    启用SQL模式后,插入的时态值会被截断:

    mysql> SELECT * FROM fractest;+-------------+------------------------+------------------------+ | c1 | c2 | c3  | +-------------+------------------------+------------------------+ | 17:51:04.77 | 2018-09-08 17:51:04.77 | 2018-09-08 17:51:04.77  | +-------------+------------------------+------------------------+
  • 接受临时实参的函数接受的值为小数秒。时间函数的返回值适当地包括小数秒。例如,现在()不带参数的返回当前日期和时间,不带小数部分,但接受从0到6的可选参数,以指定返回值包括小数秒部分。

  • 时态字面量的语法产生时态值:日期的str时间”str,时间戳的str,以及odbc语法的等价物。如果指定,结果值包括后面的小数秒部分。以前,时态类型关键字被忽略,这些构造产生字符串值。看到标准SQL和ODBC日期和时间文字