# Timestamp != Timestamp?



## sutcha (11. Okt 2007)

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 
	
	
	
	





```
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


----------



## tuxedo (11. Okt 2007)

Ich glaub das könnte dir helfen:
http://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.htm#08_01


----------



## Guest (11. Okt 2007)

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


----------



## Guest (12. Okt 2007)

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.


----------



## Guest (12. Okt 2007)

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 (12. Okt 2007)

selbst wenn ich in Oracle 
	
	
	
	





```
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 (12. Okt 2007)

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


----------



## sutcha (12. Okt 2007)

ok, das hat mir schon sehr geholfen  vielen Dank!


----------



## sutcha (12. Okt 2007)

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.


----------

