Oracle hat keinen "Time" -Datentyp. Es hat ein DATUM, welches das Datum und die Uhrzeit auf die Sekunde genau angibt. Es hat auch einen Timestamp mit größerer Genauigkeit.
Wenn Sie einen to_date() -Aufruf ausführen, erhalten Sie einen ... DATUM! Abhängig davon, wie Sie Ihre NLS-Einstellungen eingerichtet haben, können Sie den Text für dieses Datum anzeigen lassen, wie Sie möchten. Die NLS-Einstellungen steuern Dinge wie Datumsformate, Zeitstempelformate, Währungszeichen, Dezimaltrennzeichen usw. Offensichtlich sind Ihre NLS-Einstellungen so definiert, dass sie die DATE-Daten als JJJJ-MM-TT anzeigen.
Wenn Sie versuchen, generische JDBC-Daten mit Oracle DATEs zu erstellen, müssen Sie einen "statischen" Wert für den "Tag" -Teil des Datums angeben und dann auch die Zeit angeben. Betrachten Sie folgendes Beispiel:
String sql = "Select to_date('1970-01-01 ' || ? ,'YYYY-MM-DD HH24:MI:SS) as MY_TIME from dual";
Connection conn = null; //get Connection from somewhere
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, "16:31:59");
ResultSet rs = stmt.executeQuery();
rs.next(); //get to first element of result set;
java.sql.Time myTime = rs.getTime(1);
Das Ergebnis myTime einen java.sql.Time Wert sein, den Wert für 16.31.59 enthält. Denken Sie daran, den Tagesabschnitt auf einem konstanten Wert zu halten (wie oben 1970-01-01), damit Abfragen mit der Zeit in der WHERE-Klausel ordnungsgemäß funktionieren.
Danke. Aus irgendeinem Grund habe ich erwartet, dass die Oracle-Ingenieure einen konstanten Tagesabschnitt verwenden, wenn ich nur eine Zeit in TO_DATE() festlege. –