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

Reply via email to