package datesntimes; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.sql.Time; import java.sql.Timestamp; public class SQLDateAndTimeExample { public static void main(String[] args) { try { Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection( "jdbc:postgresql:test", "postgres", "postgres"); Statement statement = con.createStatement(); // Erst einmal die Datenbank sauber machen statement.executeUpdate( "DELETE FROM employees WHERE id = 12"); // Dann den Beispieldatensatz einfügen statement.executeUpdate( "INSERT INTO employees" + "(id,firstname,lastname,since,starttime," + "lastaccess) VALUES (12,'Miriam','Bauman'," + "'2001-02-01','10:00:00','2001-02-01 " + "10:00:00.000')"); // Im folgenden nutzen wir ein änderbares ResultSet. // Die hier verwendeten Methoden von ResultSet sind // analog zu denen von PreparedStatement statement = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); // ...und selektieren den Beispieldatensatz ResultSet result = statement.executeQuery( "SELECT * FROM employees WHERE id=12"); result.first(); // Dann testen wir mal alle möglichen Alternativen... System.out.println( "value of 'since' before: " + result.getDate("since")); // java.sql.Date ist von java.util.Date abgeleitet, // kann also durch die Methoden von Calendar // verändert werden (siehe entsprechende Rezepte). // Gleiches gilt fuer Time und Timestamp // Date entspricht einem Kalendertag Date date = new Date(System.currentTimeMillis()); result.updateDate("since", date); result.updateRow(); System.out.println( "value of 'since' now: " + result.getDate("since")); // Time ist eine Uhrzeit, aber ohne Tag System.out.println( "value of 'starttime' before: " + result.getTime("starttime")); Time time = new Time(System.currentTimeMillis()); result.updateTime("starttime", time); result.updateRow(); System.out.println( "value of 'starttime' now: " + result.getTime("starttime")); // Timestamp ist ein millisekundengenaue Zeitangabe System.out.println( "value of 'lastaccess' before: " + result.getTimestamp("lastaccess")); Timestamp timestamp = new Timestamp(System.currentTimeMillis()); result.updateTimestamp("lastaccess", timestamp); result.updateRow(); System.out.println( "value of 'lastaccess' now: " + result.getTimestamp("lastaccess")); } catch (Exception e) { e.printStackTrace(); } } }