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

