如何补偿MySQL TIMESTAMPDIFF的溢出

时间:2018-09-04 18:03:39

标签: mysql timestampdiff

我正在使用MySQL TIMESTAMPDIFF()函数来计算两个日期之间的月份差,但是溢出存在问题。

说我有一个日期,我使用MySQL计算一个月后的同一日期:

select DATE_ADD('2018-10-31', INTERVAL 1 MONTH)返回2018-11-30

所以,现在我有两个约会,分别是2018-10-31和2018-11-30。

现在我想计算两个日期之间的间隔时间,但是

select TIMESTAMPDIFF(MONTH, '2018-10-31', '2018-11-30')返回0,因为DATE_ADD()会根据11月的天数进行调整。

因此,给定两个日期(如上使用DATE_ADD()计算且间隔为 n 个月),可以使用TIMESTAMPDIFF()或其他函数来计算 n

1 个答案:

答案 0 :(得分:1)

您可以使用的一种解决方案是检查两个日期之间的差额。在这种情况下,您将有30天的时间,因此您可以考虑相隔一个月或更短的时间。在MySQL documentation中,有一些示例描述了超过31天的时间间隔内的一个月验证。

select TIMESTAMPDIFF(DAY,'2018-10-31','2018-11-30');
Result: 30