我正在使用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