对于其他时间段,TIMESTAMPDIFF() 函数可能会有所帮助。它接受两个 TIMESTAMP 或 DATETIME 值(DATE 值将在 MySQL 中自动转换)以及我们想要差异的时间单位。例如,我们可以在第一个参数中指定 MONTH 作为单位:
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-04')
-- Outputs: 0
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-05')
-- Outputs: 1
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-15')
-- Outputs: 1
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-12-16')
-- Outputs: 7
一个更复杂的例子
一旦掌握了 DATEDIFF() 函数的窍门,就可以以更进阶的方式使用它。举个例子,这里有一个查询,它使用 DATEDIFF() 函数来计算客户在归还电影之前租借的平均天数:
为此,将 DATEDIFF() 函数的结果传递给 AVG() 函数,然后四舍五入到小数点后 1 位。
我们在这个日期和时间系列中涵盖了很多内容,包括:
MySQL 的五种时态数据类型
一些重要的面向日期或时间的功能
如何在 MySQL 中创建日期和时间
按日期查询
虽然在 MySQL 中处理时态数据肯定还有很多工作要做,但希望本系列能让你在学习 MySQL 的道路上有个很好的开端。