Timestamp != Timestamp?

Status
Nicht offen für weitere Antworten.

sutcha

Bekanntes Mitglied
Hallo,

ich habe ein Problem mit Timestamps. In der Datenbank (Oracle) ist ein Timestamp-Wert in einer Spalte. Nun möchte ich alles mit der ID x in einem bestimmten Zeitraum auslesen, also
Code:
from table t where id = "+ix+" and timeStamp between '"+beginTimestamp+"' and '"+endTimestamp+"
Ich benutze den Java.sql.Timestamp, aber er scheint nicht den gleichen Wert zu haben, wie der Oracle-Timestamp. Ich bekomme immer "java.sql.SQLException: ORA-01843: Kein gültiger Monat".

Wenn ich beim sql.Timestamp getMonth() mache, dann hat der Januar den Wert 0 und der Oktober auch!?
Was kann ich machen? Auch getYear() gibt 106 statt 2006 aus. Welchen Java-Timestamp kann ich denn beruhigt benutzen?

Vielen Dank schonmal!

sutcha
 
G

Guest

Gast
Verwende PreparedStatements, dann brauchst du dir keine Gedanken über die Syntax der vorliegenden
Datenbank zu machen.
 
G

Guest

Gast
ich fürchte, es liegt an meinem SDF (SimpleDateFormat).
Die beiden Zeiträume werden in einem Textfeld eingegeben, mit Hilfe des SDF erstelle ich aus dem String (dd.MM.yyyy) ein Date-Objekt und daraus ein Timestamp(date.getTime()). Durch dieses String -> Date -> TS kommt wahrscheinlich der Fehler oder?
Gibt es eine andere Möglichkeit aus einem String ein Timestamp zu machen? Bei der Eingabe brauche ich nur den Tag und keine Stunden, Minuten etc.
 
G

Guest

Gast
sorry, falsch gepostet. Sollte nicht als Gast sein. Liegt wohl noch an der Müdigkeit :)

das Date-Objekt ist ein util.Date und kein sql.Date, da sonst kein parse von SDF auf Date möglich ist.
 

sutcha

Bekanntes Mitglied
selbst wenn ich in Oracle
Code:
id = 27 and time_stamp between '01-01-07 13:26:02,218000000' and '01-01-08 13:26:02,218000000'
eingebe, komm die Meldung: Kein gültiger Monat. Irgendwas scheint nicht zu funktionieren. Mit HSQL funktioniert alles wunderbar...
 

SnooP

Top Contributor
du musst da ein to_date einbauen und die formatierungsmaske entsprechend angeben... sonst wird in oracle aus dem string kein date
 

sutcha

Bekanntes Mitglied
Es funktioniert entweder mit Oracle oder mit HSQL. Hab jetzt die Timestamps aus dem Statement entfernt und grenze den Zeitraum in Java ein, lösche da also Elemente, die nicht im gültigem Zeitraum sind.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben