您可以使用
TIMEDIFF()和
TIME_TO_SEC()函数,如下所示:
SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;+------+| diff |+------+| 60 |+------+1 row in set (0.00 sec)您还可以使用其他答案中建议的@Amber
UNIX_TIMESTAMP()函数:
SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') - UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;+------+| diff |+------+| 60 |+------+1 row in set (0.00 sec)如果您使用的是
TIMESTAMP数据类型,我猜想
UNIX_TIMESTAMP()解决方案会稍微快一点,因为
TIMESTAMP值已经存储为整数,代表自纪元(Source)以来的秒数。引用文档:
在列
UNIX_TIMESTAMP()上使用时TIMESTAMP,该函数直接返回内部时间戳记值,而没有隐式的“字符串到Unix时间戳记”转换。请注意,
TIMEDIFF()
返回数据类型为TIME。TIME值的范围可以从“
-838:59:59”到“ 838:59:59”(大约34.96天)



