F_G

许多问题需要说清楚就可以&&走永远比跑来的重要

导航

MySQL当中的闰月最后一天的计算问题

在日期的计算当中会出现一个奇怪的问题:

如果当前日期是闰年的2月29日,那么对当前的日期+ N 年,那么相应的日期变为2月28日。但是这不符合我们的常识,按照常识,当只有28天的时候,时间应该顺延一天,变为3月1日。

例如下面的SQL带么用来计算,今年的生日日期:

select name,birthday,NOW(),
DATE_ADD(birthday1, INTERVAL IF(DAY(birthday)=29 && DAY(birthday1)=28,1,0) DAY) as birthday2
from(
    select name,birthday,DATE_ADD(birthday,INTERVAL diff YEAR) as birthday1
    from(
        select name,birthday,(YEAR(NOW())-YEAR(birthday)) as diff
        from user
    )
)

其中第一层循环,是要计算当前日期和出生日期相差的年份。

第二层循环,初步计算几年的生日日期。

第三层循环,进一步修正出生日期。

 

posted on 2015-12-02 19:55  F_G  阅读(427)  评论(0编辑  收藏  举报