[Mono-list] Re: MySQLDataReader.Read Exception

Jeremy N. Morgan jmorgan@ALAW.ORG
Thu, 9 Jan 2003 10:28:31 -0800

As far as I can tell, the problem appears to be that MySQL doesn't use
an actual date to display an empty string.  MySQL uses 0000-00-00,
unlike the other databases I am familiar with (MS-SQL and Oracle), which
use 1900-01-01, a valid date.  When the MySQLreader gets the 0000-00-00,
it tries to cast it into a datetime value and fails (with 0000-00-00 not
being a valid date).

Try setting your select statement to do an IF(expr1,expr2,expr3) when
returning that field to return a valid date if it encounters an empty
string like:

Select if(date1='', '1900-01-01', date1) as date1 from table1;

Not knowing C# very well, I don't know how to fix this in the
MySQLReader code, but my hunch is that the MySQLReader just needs a
datetime '' handler.  If it was based on the SQLDataReader, it probably
doesn't have one because SQLDataReader doesn't need one since it would
only ever get a valid date or null.

Does that help?

Jeremy N. Morgan

-----Original Message-----
From: Rodrigo Moya [mailto:rodrigo@ximian.com] 
Sent: Wednesday, January 08, 2003 4:24 PM
To: Vincent Daron
Cc: mono-list@ximian.com
Subject: [Mono-list] Re: MySQLDataReader.Read Exception

On Wed, 2003-01-08 at 22:03, Vincent Daron wrote:
> hello
> I've got an invalid cast exception in MySQLDataReader.Read() while 
> reading a row containing a DateTime field = 0000-00-00 00:00:00.
> It's less than DateTime.MinValue and I suppose that the problem is the

> same with value bigger than MaxValue.
> Any idea ?
not sure what it is, so forwarding to the mono list.


Rodrigo Moya <rodrigo@ximian.com>

Mono-list maillist  -  Mono-list@ximian.com