关于mysql月份相减的问题,
首先 DATE_FORMAT(DATE_ADD('2000-01-31',INTERVAL 1 MONTH ),'%Y-%m-%d') 得到的结果是 2000-02-29
然后 TIMESTAMPDIFF(MONTH,'2000-01-31','2000-02-29') 得到的月份竟然是 0 问题,为什么2000-01-31 加1个月得到的是正确的,而用 2000-02-29 减 2000-01-31 得到的却不是 1那么怎么样才能得到月分相减的正确值呢???
首先 DATE_FORMAT(DATE_ADD('2000-01-31',INTERVAL 1 MONTH ),'%Y-%m-%d') 得到的结果是 2000-02-29
然后 TIMESTAMPDIFF(MONTH,'2000-01-31','2000-02-29') 得到的月份竟然是 0 问题,为什么2000-01-31 加1个月得到的是正确的,而用 2000-02-29 减 2000-01-31 得到的却不是 1那么怎么样才能得到月分相减的正确值呢???
mysql> select TIMESTAMPDIFF(MONTH,'2000-05-01','2000-06-01');
+------------------------------------------------+
| TIMESTAMPDIFF(MONTH,'2000-05-01','2000-06-01') |
+------------------------------------------------+
| 1 |
+------------------------------------------------+
1 row in set (0.01 sec)mysql> select TIMESTAMPDIFF(MONTH,'2000-05-02','2000-06-01');
+------------------------------------------------+
| TIMESTAMPDIFF(MONTH,'2000-05-02','2000-06-01') |
+------------------------------------------------+
| 0 |
+------------------------------------------------+
1 row in set (0.00 sec)mysql> select TIMESTAMPDIFF(MONTH,'2000-04-02','2000-06-01');
+------------------------------------------------+
| TIMESTAMPDIFF(MONTH,'2000-04-02','2000-06-01') |
+------------------------------------------------+
| 1 |
+------------------------------------------------+
1 row in set (0.00 sec)mysql>
由上面的测试可以得到
TIMESTAMPDIFF,得到的两个时间差不是一个整月的,就舍去变成0。