# SQL Problem mit Date



## K-Man (9. Dez 2010)

Hallo zusammen
Ich habe ein Problem mit der Dateumwandlung. Ich lese einen String ein, der das Format '01.08.2009' hat. Komisches Problem. dateString ist noch '01.08.2009'
date macht mir schon ein Sat Aug 01 00:00:00 CEST 2009
und sqldate ist 2009-08-01
Soweit noch kein Problem. Nur wenn ich das in ein Update lege, dann schreibt er mir teilweise 1905 als Jahr in die Datenbank. Also komplett andere Zahlen. Was mach ich da falsch?

```
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
            String dateString = st.nextToken();
            System.out.println(dateString);
            java.util.Date date = sdf.parse(dateString);
            System.out.println(date.toString());
            Date sqldate = new Date(date.getTime());
            System.out.println(sqldate.toString());
String sql = "update table set Refilldate=" + sqldate + "where value='" + value + "'";
```

Vielen Dank
Stefan


----------



## tfa (9. Dez 2010)

Benutze PreparedStatements:
Using Prepared Statements (The Java™ Tutorials > JDBC(TM) Database Access > JDBC Basics)

Damit wird dieses Problem gelöst - und viele andere...


----------



## SlaterB (9. Dez 2010)

wie lautet denn die Query letzlich,
"update table set Refilldate=2009-08-01 where .."
?
du meinst das funktioniert, geht das direkt mit einem SQL-Tool auf der Datenbank?
ob es so geht kann ich nicht sagen, für eine Oracle-DB funktioniert z.B. SQL-Code [c] to_date('30.02.2010','DD.MM.YYYY')[/c]

sicherer ist es vielleicht, ein PreparedStatement zu verwenden und dann mit setDate() das Datum kontrolliert zu übergeben,
der JDBC-Treiber wird dann hoffentlich das passende Format wählen


----------



## K-Man (9. Dez 2010)

Ok danke. Ich nutze normal SQL-Statements. Wollte aber alles komplett in ein Script packen und ohne PreparedStatements erledigen. Dann werde ich wohl für die Skripte noch ein paar weitere StoredProcedures anlegen müssen. Danke.


----------

