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 ) )
其中第一层循环,是要计算当前日期和出生日期相差的年份。
第二层循环,初步计算几年的生日日期。
第三层循环,进一步修正出生日期。