Description:
I have tested a little bit with the INTERVAL Function, and I found something that is strange. (It's about leap years.)
When calculating with INTERVAL the February results strange behaviour.
How to repeat:
Here are the SQL-Statements:
select "------";
select now();
select "------";
select date(now() + interval 2 day + interval + 1 month);
select date(now() + interval 3 day + interval + 1 month);
select date(now() + interval 4 day + interval + 1 month);
select date(now() + interval 5 day + interval + 1 month);
select date(now() + interval 6 day + interval + 1 month);
select date(now() + interval 7 day + interval + 1 month);
select date(now() + interval 8 day + interval + 1 month);
select date(now() + interval 9 day + interval + 1 month);
select "------";
select date(now() + interval 2 day + interval + 1 month - interval 1 year);
select date(now() + interval 3 day + interval + 1 month - interval 1 year);
select date(now() + interval 4 day + interval + 1 month - interval 1 year);
select date(now() + interval 5 day + interval + 1 month - interval 1 year);
select date(now() + interval 6 day + interval + 1 month - interval 1 year);
select date(now() + interval 7 day + interval + 1 month - interval 1 year);
select date(now() + interval 8 day + interval + 1 month - interval 1 year);
select date(now() + interval 9 day + interval + 1 month - interval 1 year);
================
Here are the results:
------
------
now()
2005-01-24 13:41:12
------
------
date(now() + interval 2 day + interval + 1 month)
2005-02-26
date(now() + interval 3 day + interval + 1 month)
2005-02-27
date(now() + interval 4 day + interval + 1 month)
2005-02-28
date(now() + interval 5 day + interval + 1 month)
2005-02-28
date(now() + interval 6 day + interval + 1 month)
2005-02-28
date(now() + interval 7 day + interval + 1 month)
2005-02-28
date(now() + interval 8 day + interval + 1 month)
2005-03-01
date(now() + interval 9 day + interval + 1 month)
2005-03-02
------
------
date(now() + interval 2 day + interval + 1 month - interval 1 year)
2004-02-26
date(now() + interval 3 day + interval + 1 month - interval 1 year)
2004-02-27
date(now() + interval 4 day + interval + 1 month - interval 1 year)
2004-02-28
date(now() + interval 5 day + interval + 1 month - interval 1 year)
2004-02-28
date(now() + interval 6 day + interval + 1 month - interval 1 year)
2004-02-28
date(now() + interval 7 day + interval + 1 month - interval 1 year)
2004-02-28
date(now() + interval 8 day + interval + 1 month - interval 1 year)
2004-03-01
date(now() + interval 9 day + interval + 1 month - interval 1 year)
2004-03-02
Suggested fix:
No idea . ;-)