关于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那么怎么样才能得到月分相减的正确值呢???

解决方案 »

  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。