# MySQL + JDBC: Leeres datetime-Feld einlesen



## Reinhard (5. Jul 2006)

Hallo,

ich verwende MySQL 4.1.11 und JDBC.

In einer Tabelle ist ein Datumsfeld wie folgt vorhanden:


> Name: Datum
> Typ: datetime
> Null: Nein
> Standard: 0000-00-00 00:00:00



Nun setze ich einen Select auf die Tabelle ab und möchte mit dem ResultSet die Daten holen:


> rs.getDate(1);



Wenn in der Tabelle das Datum gesetzt ist, funktioniert es ohne Probleme. 

Aber wenn der Wert darin "0000-00-00 00:00:00" ist, bekomme ich folgende Exception:


> java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Date.



Dann habe ich versucht das ganze als rs.getString(1) einzulesen. Dann erhalte ich diese Exception:


> java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 1 to TIMESTAMP


Wie frage ich denn hier das leere Datumfeld richtig ab?

Danke,
Reinhard


----------



## Reinhard (5. Jul 2006)

Hm, kann es sein, das ich die Tabelle in MySQL falsch angelegt habe? Aber ein DATETIME-Feld sollte doch kein Problem sein ...


----------



## willow82 (21. Jul 2006)

hab das gerade zufällig gesehen. Falls das Problem noch aktuell ist:

häng die Option zeroDateTimeBehavior=convertToNull an die url, und die Sache passt.

Bspw: DriverManager.getConnection("jdbc:mysql://localhost/test?zeroDateTimeBehavior=convertToNull", "root", "");

laut mysql ab ist die Exception Absicht. Irgendwo auf deren Seiten ist das beschrieben, es gibt auch noch andere settings als convertToNull. So wie's oben steht hat sich das bei mir jedenfalls als praktikabel erwiesen.

greetz b.


ps:

>> Name: Datum
>> Typ: datetime
>> Null: Nein
>> Standard: 0000-00-00 00:00:00

wenn du in deiner Tabelle auf "not null" für das datetime-Feld verzichtest, und den Standard rausschmeißt erübrigt sich das Problem.


----------



## Reinhard (21. Jul 2006)

Ich hab jetzt einfach ein date-Feld daraus gemacht.
Ich werde aber deine Antwort noch testen.

Vielen Dank,
Reinhard


----------



## Gast (3. Aug 2006)

ich hatte auch das problem - nach dem einfügen von ?zero...... hat alles funktioniert - dafür merci


----------

