It looks pretty interesting that no matter if date() function works as is now or with some heuristics applied the following equations are not always true:
date(some_date, '-1 month', '+1 month') = some_date date(some_date, '-1 month') = date(some_date, '-1 day', '-1 month', '+1 day') Looks like a lot of head ache for someone trying to work with such arithmetics in his application. :) Pavel On Tue, Oct 13, 2009 at 3:43 PM, Nicolas Williams <[email protected]> wrote: > On Tue, Oct 13, 2009 at 03:30:44PM -0400, D. Richard Hipp wrote: >> Begin with 2001-03-31 >> Add 1 to 03, yielding 2001-04-31 >> 04-31 means the 31st day from the beginning of april: 2001-05-01 >> >> Begin with 2001-03-31 >> Subtract 1 from 03 yielding 2001-02-31. >> 02-31 means the 31st day from the beginning of february: 2001-03-03 > > The fact that Earth years are not a whole multiple of some convenient > number of Earth days (i.e., months), is certainly annoying. What > SQLite3 does seems perfectly justified; that it may sometimes seem > surprising is not your fault, but cosmic chance. > > I think the OP expected that 2001-03-31 - 1month == 2001-02-28 (or 29, > on leap years), because that's often (but not always) what people mean > when they say "a month ago". You could have a lot of special casing in > date() to get something closer to what people normally mean by "a month > ago", but it'd be alot harder to explain the many heuristic choices, and > the choices might be too specific to one language/culture -- that'd not > be worthwhile, IMO. > > Nico > -- > _______________________________________________ > sqlite-users mailing list > [email protected] > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list [email protected] http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

