# Probleme mit Date in H2 Datenbank



## trazzag (18. Aug 2007)

Hallo!

Ich möchte in einer Anwendung alte Daten (älter als zwei Jahre) aus einer Datenbanktabelle löschen. Dazu habe ich mir folgende Funktion geschrieben:


```
public void loescheAlteHistorie() {
		dbConnection = getConnection();
		Statement statement = null;
		try {
			statement = dbConnection.createStatement();
			Date datum = new java.util.Date();
			SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
			String dateString = formater.format(datum);
			System.out.println("aktuelles Datum: " + dateString);
			int i = Integer.parseInt(dateString.substring(0, 4));
			i = i - 2;
			dateString = i + dateString.substring(4, 10);
			System.out.println("altes Datum: " + dateString);
			statement.executeUpdate("DELETE FROM Historie WHERE Datum < "
					+ dateString + ";");
			view.bereinigenMessage();

			dbConnection.close();
		} catch (SQLException exception) {
			view.errorMessage("Fehler beim Löschen der veralteten Daten: "
					+ exception);
		}
	}
```

Ich erhalte folgende Fehlermeldung: "org.h2.jdbc.JdbcSQLException: Kann Datum 1979 nicht umwandeln
Cannot parse date constant 1979 [90009-56]".
Ein Datum 1979 kommt in meinen Testdaten aber gar nicht vor...!

Hoffe mir kann jemand helfen.


----------



## trazzag (18. Aug 2007)

Problem gelöst: ich hatte vergessen das Datum in Anführungszeichen zu setzen.


----------



## Guest (18. Aug 2007)

Mach's einfacher
	
	
	
	





```
...
      PreparedStatement statement = null;
      try {
         Calendar calendar = Calendar.getInstance();
         calendar.add(Calendar.YEAR, -2);

         statement = dbConnection.prepareStatement("DELETE FROM Historie WHERE Datum < ?");
         statement.setDate(1, new java.sql.Date(calendar.getTimeInMillis()));
         statement.executeUpdate();

         view.bereinigenMessage();
...
```


----------

