假设我在mysql(5.5 +)中有以下表:
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL,
`x_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`y_time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我的x_time是timestamp
,y_time是datetime
列
我想了解当我TIMESTAMPDIFF(SECOND, x_time, y_time)
x_time
是否转换为datetime
,然后计算差异?或反之亦然? Mysql手册(http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_timestampdiff)说:一个表达式可能是日期,另一个表达式可能是日期时间;如有必要,日期值将被视为时间部分为'00:00:00'的日期时间。
我的假设是x_time
和y_time
列都必须是一种数据类型来计算TIMESTAMPDIFF,如果它不是,那么mysql必须在内部执行。我错了吗?
此外,如果必须转换其中一列以匹配另一列的数据类型,那么性能对于以下查询的重要性如何?它会为5000行进行数据类型转换吗?这个过程耗时多少?
SELECT * from test WHERE `TIMESTAMPDIFF(SECOND, x_time, y_time)` LIMIT 100000, 5000