如何补偿MySQL TIMESTAMPDIFF的溢出



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

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

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

您可以使用的一种解决方案是检查两个日期的天数之间的差异。在这种情况下,您将有 30 天的时间,因此您可能会认为相隔一个月或更短的时间。在MySQL文档中,有一些示例描述了在超过31天的时间段之间一个月的验证。

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

最新更新