MySQL 中精确的月份差异计算
MySQL 提供了一个不可或缺的函数 TIMESTAMPDIFF() 来计算两个日期之间的月份数。它消除了与不同月份长度和闰年相关的并发症。
SELECT TIMESTAMPDIFF(MONTH, '2012-03-08', '2012-08-01'); -- Outputs: 4
精度增强
为了获得更高的精度,可以采用更复杂的方法:
SELECT TIMESTAMPDIFF(MONTH, startdate, enddate) + DATEDIFF( enddate, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ) / DATEDIFF( startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) + 1 MONTH, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH )
此公式通过计算剩余天数(月差后)作为 a 的分数来增加精度
示例
WITH startdate AS '2012-03-08', enddate AS '2012-04-15' SELECT TIMESTAMPDIFF(MONTH, startdate, enddate) + DATEDIFF( enddate, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ) / DATEDIFF( startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) + 1 MONTH, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ); -- Outputs: 1.2333
此结果表明两个日期之间存在 1 个月和约 23.33% 的月份差异。
以上是如何在MySQL中计算精确的月份差异?的详细内容。更多信息请关注PHP中文网其他相关文章!