当我们在时间戳和日期时间之间采用timediff时会发生什么

时间:2014-01-13 11:52:02

标签: mysql timestamp innodb

假设我在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_timey_time列都必须是一种数据类型来计算TIMESTAMPDIFF,如果它不是,那么mysql必须在内部执行。我错了吗?

此外,如果必须转换其中一列以匹配另一列的数据类型,那么性能对于以下查询的重要性如何?它会为5000行进行数据类型转换吗?这个过程耗时多少?

SELECT * from test WHERE `TIMESTAMPDIFF(SECOND, x_time, y_time)` LIMIT 100000, 5000

0 个答案:

没有答案