作者:宛如画中人需_308 | 来源:互联网 | 2014-05-29 08:43
在MariaDB5.3和以后版本,时间,日期时间,和时间戳类型,随着时间函数,CAST和动态列,现在支持微秒。datetime列时间精度可以在创建表时指定的,例如:CREATETABLEexample(col_microsecDATETIME(6),col_millisecTIME(3));通常,任何时间,日期时间,或
在MariaDB 5.3和以后版本,时间,日期时间,和时间戳类型,随着时间函数, CAST和动态列,现在支持微秒。datetime列时间精度可以在创建表时指定的,例如:
CREATE TABLE example(
col_microsec DATETIME(6),
col_millisec TIME(3)
);
通常,
任何时间,日期时间,或时间戳列都指定精度,在类型名称后括号中。datetime精密指定小数点后面的数字,可以是任意整数数字从0到6。如果没有指定精度就是默认为0,为了向后兼容的原因。
作为一个可以预期,一个日期精度可以指定。例如:
当存储过程声明的参数。
当存储函数指定返回类型的。
当声明变量。
在CAST函数:
create function example(x datetime(5))
returns time(4)
begin
declare y timestamp(6);
return cast(x as time(2));
end;
额外信息
一些额外的提示,没有特定的顺序:
SELECT CURTIME(4);
--> 10:11:12.3456
TIME_TO_SEC() 和 UNIX_TIMESTAMP()保存微秒的论点。这些函数将返回一个十进制数如果结果非零datetime精度和一个整数否则(向后兼容)。
SELECT TIME_TO_SEC('10:10:10.12345');
--> 36610.12345
当前版本的这个补丁修复一个bug在以下优化:在某些有DISTINCT查询,MariaDB可以忽略这一条款,如果它能证明所有结果行是独一无二的,例如,当一个主键是与一个常数。有时这种优化应用不正确,尽管——例如,当用一个日期常数比较字符串。现在被修复了。
DATE_ADD()和DATE_SUB()函数现在可以把一个时间表达式作为参数(不只是DATETIME像以前一样)。
SELECT TIME('10:10:10') + INTERVAL 100
MICROSECOND;
--> 10:10:10.000100
在mysql.general_log表的event_time字段和在mysql.slow_log 表的start_time,
query_time, lock_time现在存储值使用微秒级精度。
这个补丁修复一个bug当在使用BETWEEN操作符和其中的一个操作数是NULL下比较一个时间值。
旧的语法的TIMESTAMP (N),其中N是显示宽度,不再支持。它在MySQL 4.1.0被弃用
(发布于2003-04-03)。
当一个DATETIME值和一个时间值相比,后者被当作一个完整的DATETIME用零填充日期部分,类似于DATE比较DATETIME,或比较小数数字。在这种情况下MariaDB早期版本的用于比较这两个操作数都的部分。
注意:当你把一个时间值转化一个较小的精度值,它将被截断,不是取整。这样做是为了保证日期部分是没有改变。例如:
SELECT CAST('2009-12-31 23:59:59.998877' as
DATETIME(3));
-> 2009-12-31 23:59:59.998