hallo Forum,
Code sagt mehr als tausend Worte:
die Ausgabe davon ist:
die Logdatei sieht immer so aus (auch wenn ich den Timestamp benutze):
das Datumsfeld, mit dem ich den Vergleich möchte, ist ein DATETIME Feld.
beim Googeln habe ich das hier gefunden (brachte mich auf die Timestamp-geschichte):
How to store Java Date to Mysql datetime...? - Stack Overflow
Das ResultSet ist bei jeder Variante (auskommentierte Zeilen) null.
Und warum will es nicht wenn ich den String als zweites StatementArgument einfüge? Beispiel eines Datetimes in der DB: 2012-04-12 11:14:01
MySQL :: MySQL 5.1 Referenzhandbuch :: 25.3.4.3 Datentypen von Java, JDBC und MySQL
...meint auch, daß es mit String gehen sollte. Und Timestamp ist wohl zu bevorzugen.
Hat da jemand eine Lösung hier?
Code sagt mehr als tausend Worte:
Java:
java.util.Date actualDate = new java.util.Date();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = dateFormat.format(actualDate);
java.sql.Date actualDateSql = new java.sql.Date(actualDate.getTime());
java.sql.Timestamp actualTimeSql = new java.sql.Timestamp(actualDate.getTime());
System.out.println("Date: " + actualDate.toString());
System.out.println("SQL-Date: " + actualDateSql);
System.out.println("SQL-Timestamp: " + actualTimeSql);
System.out.println("format-Date: " + dateString);
try {
PreparedStatement pstmt = con.prepareStatement("SELECT * FROM ? WHERE (end_datetime < ?)");
pstmt.setString(1, tableName);
// pstmt.setDate(2, actualDateSql);
// pstmt.setTimestamp(2, actualTimeSql);
pstmt.setString(2, dateString);
System.out.println("PreparedStatement: " + pstmt.toString());
ResultSet result = pstmt.executeQuery();
if (result.first()) {
System.out.println("Result: " + result);
return result;
}
} catch (SQLException e) {
logger.error(e.getMessage());
}
die Ausgabe davon ist:
Code:
Date: Mon Apr 02 13:40:52 CEST 2012
SQL-Date: 2012-04-02
SQL-Timestamp: 2012-04-02 13:40:52.73
format-Date: 2012-04-02 13:40:52
PreparedStatement: com.mysql.jdbc.JDBC4PreparedStatement@4b0ab323: SELECT * FROM 'dev_votingp_wettsys' WHERE (end_datetime < '2012-04-02 13:40:52')
die Logdatei sieht immer so aus (auch wenn ich den Timestamp benutze):
Code:
ERROR - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''dev_votingp_wettsys' WHERE (end_datetime < '2012-04-02 13:40:52')' at line 1
das Datumsfeld, mit dem ich den Vergleich möchte, ist ein DATETIME Feld.
beim Googeln habe ich das hier gefunden (brachte mich auf die Timestamp-geschichte):
How to store Java Date to Mysql datetime...? - Stack Overflow
Das ResultSet ist bei jeder Variante (auskommentierte Zeilen) null.
Und warum will es nicht wenn ich den String als zweites StatementArgument einfüge? Beispiel eines Datetimes in der DB: 2012-04-12 11:14:01
MySQL :: MySQL 5.1 Referenzhandbuch :: 25.3.4.3 Datentypen von Java, JDBC und MySQL
...meint auch, daß es mit String gehen sollte. Und Timestamp ist wohl zu bevorzugen.
Hat da jemand eine Lösung hier?