WHERE datetime < (util.Date | sql.Date | sql.Timestamp | dateString)

allapow

Mitglied
hallo Forum,

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?
 
S

SlaterB

Gast
was läßt dich überhaupt vermuten dass die Fehlermeldung etwas mit dem Date zu tun hat?
leider ist die nicht deutlich, aber es wäre schon eine gewisse geistige Leistung, einen nicht zu parsenden SQL noch genauer zu analysieren und Fehler zu vermuten,
anderseits könnte auf den ersten konkreten Fehler auch viel deutlicher hingewiesen werden

ganz ohne Date "SELECT * FROM ?" führt genauso zum Fehler oder?
das Problem ist dass du die Tabelle variabel machen willst, beim Tabellennamen als String 'dev_votingp_wettsys'
setzt dann auch die Fehlermeldung ein, wenn man ganz genau hinschaut

das funktioniert nicht, Tabellenname, Attributnamen usw. müssen fest in das SQL rein

--------

beim Date kannst du aber auch noch vielleicht besser werden, was spricht gegen pstmt.setDate() oder ähnliches?
dann musst du überhaupt nicht darüber nachdenken wie das Date zu formatieren ist,
macht hoffentlich der JDBC-Treiber richtig

ach ja, hast du auch schon und auskommentiert, vielleicht weil du da den Fehler vermutet hast
 

allapow

Mitglied
du hast Recht, dank dir.

Weil die Fehlermeldung auf das Ende des QueryStrings hinwies habe ich dort natürlich auch den Fehler gesucht. Und weil ich an die Fehlermeldung glaubte habe ich im Dunkel irgendetwas gesucht. Ja und dann bin ich hier ins Forum gekommen weil ich im Dunkel nichts gefunden habe :D

Den Tabellenname wollte ich variabel machen weil der sich ändern kann. Jetzt mache ich es ohne PreparedStatement, das funktioniert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
J Mehrere WHERE Werte benutzen Datenbankprogrammierung 2
B JPA -> Dynamische WHERE Clause / SQL Injection möglich? Datenbankprogrammierung 11
J Hibernate One-To-One mit Where Klausel Datenbankprogrammierung 6
D Fälle bei WHERE unterscheiden Datenbankprogrammierung 5
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
M Variable in SQL SELECT * FROM ... WHERE mithilfe von PreparedStatement benutzen? Datenbankprogrammierung 28
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
N Prepared Statement mit unbekannter Anzahl von Where-Clauses Datenbankprogrammierung 30
C MySQL Abfrage mit flexibler WHERE bedingung Datenbankprogrammierung 10
K Unkown Column in where clausel Datenbankprogrammierung 2
Y JPQL WHERE != Objekt Datenbankprogrammierung 10
J where Abfrage auf ein mysql date feld Datenbankprogrammierung 5
M Select * from mydaten where ... Datenbankprogrammierung 4
M Mysql Delete ohne Where Klausel untersagen Datenbankprogrammierung 8
M SQL-Abfrage mit where-Bedingung Datenbankprogrammierung 2
W Where-ähnliche abfrage in objektorientierter Datenbank Datenbankprogrammierung 5
G Frage zu SQL "WHERE IN (1, 2, 3. , N)" Datenbankprogrammierung 8
S Platzhalter in WHERE Klausel Datenbankprogrammierung 16
M MySQL MySQL DATETIME-Import Datenbankprogrammierung 9
T MySQL Datetime wird auf Sekunden gerundet, soll es aber nicht Datenbankprogrammierung 2
E Data truncation Incorrect datetime value Datenbankprogrammierung 2
E Wert mit letztem Datetime bekommen Datenbankprogrammierung 2
G Java & MS SQL-Datetime Datenbankprogrammierung 17
G PrepareStatement + Datetime Datenbankprogrammierung 9
E Vergleichen von datetime mit GregorianCalender-Werte Datenbankprogrammierung 6
R MySQL + JDBC: Leeres datetime-Feld einlesen Datenbankprogrammierung 4
C Tabelle erstellen mit Apache JDBC-Util Datenbankprogrammierung 1
C MySQL Fragen zu BLOB zu byte[], Date zu java.util.Date uvm. Datenbankprogrammierung 6
T SQL Date String in java.util.Date umwandeln Datenbankprogrammierung 3
ARadauer Could not determine type for: java.util.List, for columns Datenbankprogrammierung 3
S java.util.date in java.sql.date wandeln Datenbankprogrammierung 5
S Umwandlung des Datumsformates util.Date und sql.Date Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben