[egenix-users] RelativeDateTime

M.-A. Lemburg mal at egenix.com
Mon Jan 19 13:01:28 CET 2004


Francois Girault wrote:
> On Thu, 15 Jan 2004 11:50:55 +0100
> M.-A. Lemburg wrote:
> 
> 
>>Francois Girault wrote:
>>
>>>So the behavior we expect is the same than postgresql with interval
>>>type. IMHO, postgresql (ie SQL99 interval type) has a very logical
>>>point of view about this non obvious problem. What do you think
>>>about that ?
>>
>>Do you have a reference for this ?
>>
> 
> This directory contains many docs about SQL99 :
> 
> http://trinetra.ncb.ernet.in/education/modules/dbms/SQL99/
> 
> But I haven't found a fully explained date arithmetic.
> 
> In this document :
> 
> http://trinetra.ncb.ernet.in/education/modules/dbms/SQL99/ansi-iso-9075-2-1999.pdf
> 
>  a chapter about interval says on page 29 : "Arithmetic
> operations involving values of type datetime or interval obey the
> natural rules associated with dates and times and yield valid datetime
> or interval results according to the Gregorian calendar."
> 
> "natural rules" are *very* ambigious, but playing with postgres tell
> more about that :
> 
> => SELECT date('2002-01-30') + "interval"('1 mon');
>       ?column?       
> ---------------------
>  2002-02-28 00:00:00
> (1 row)
> 
> For date from january, 28th to january, 31th adding one month result in
> the last day of february. From a math point of view, it seems wrong, but
> thinking more about make me consider it 'natural'

The problem with this approach is obvious, e.g. what would
the outcome of the following variations be:

Date(2004,1,31) + RelativeDateTime(months=+1)
Date(2004,1,31) + RelativeDateTime(months=+2) - RelativeDateTime(months=-2)
Date(2004,1,31) + RelativeDateTime(months=+3)

BTW, the stragety chosen in mxDateTime's implementation for
RelativeDateTime matches that of MS Excel VBA, see e.g.

	http://www.cpearson.com/excel/datearith.htm

(Only by accident, I must say :-)

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Jan 18 2004)
 >>> Python/Zope Consulting and Support ...        http://www.egenix.com/
 >>> mxODBC.Zope.Database.Adapter ...             http://zope.egenix.com/
 >>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________

::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! ::::


More information about the egenix-users mailing list