Java Timestamp in Datenbank einfügen

PeterPan123

Mitglied
Hallo zusammen,

ich möchte ein Insert-Statement abgeben bei welchem eine ID, die aktuelle Zeit und noch ein anderer Wert genutzt wird. Jedoch bereitet mir die Zeit Probleme

Java:
java.sql.Timestamp tstamp = new java.sql.Timestamp(System.currentTimeMillis());
...
String query = "INSERT INTO datenbank.dbo.[" + textTeile[0] + "] (UID, Zeit, Vorgabe) Values ('"  + textTeile[0] +"'," + tstamp  +"," + textTeile[2] +")";   
		System.out.println("INSERT INTO datenbank.dbo.[" + textTeile[0] + "] (UID, Zeit, Vorgabe) Values ('" + textTeile[0] +"',"+ tstamp +"," + textTeile[2] +")");
		stmt.executeUpdate(query);

Hier das SQL-Statement nochmal einzeln:
SQL:
INSERT INTO datenbank.dbo.[010C27F412] (UID, Zeit, Vorgabe) Values ('010C27F412',2012-11-29 15:50:17.336,0.00);

Könnte es sein, dass es nicht klappt, weil die betreffende Spalte in der MS SQL-Datenbank vom Typ datetime ist? Wenn ja, weiß ich leider nicht wie ich die Java-Zeit in das richtige Format umformatiere.

Dieser Fehler wird ausgegeben:
[WR]Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: Falsche Syntax in der Nähe von '15'.[/WR]
 
einfach danach suchen, 'MS SQL insert date', vielleicht nicht ganz leicht die richtige DB zu erwischen,
ob dieser Link das richtige behandelt kann ich nicht sagen,
.net - how to insert datetime into the SQL Database table? - Stack Overflow
aber zeigt zumindest die grundlegenden Erkenntnisse:
- alles außer Zahlen in Anführungszeichen
- evtl. noch Methoden wie hier convert() beteiligt, to_date() usw.

Bedienungsanleitung zur installierten DB wäre auch was nettes

---

edit:
Java:
String query = "INSERT INTO datenbank.dbo.[" + textTeile[0] + "] (UID, Zeit, Vorgabe) Values ('"  + textTeile[0] +"'," + tstamp  +"," + textTeile[2] +")";   
        System.out.println("INSERT INTO datenbank.dbo.[" + textTeile[0] + "] (UID, Zeit, Vorgabe) Values ('" + textTeile[0] +"',"+ tstamp +"," + textTeile[2] +")");
besser so schreiben:
Java:
String query = "INSERT INTO datenbank.dbo.[" + textTeile[0] + "] (UID, Zeit, Vorgabe) Values ('"  + textTeile[0] +"'," + tstamp  +"," + textTeile[2] +")";   
        System.out.println(query );
😉
 
Zuletzt bearbeitet von einem Moderator:
also wenn der sql-server in der gleichen zeitzone steht
Java:
String query = "INSERT INTO datenbank.dbo.[" + textTeile[0] + "] (UID, Zeit, Vorgabe) Values ('"  + textTeile[0] +"',CURRENT_TIMESTAMP," + textTeile[2] +")";   
        stmt.executeUpdate(query);
 
Also ich würde ja (bin ich von PHP gewohnt) mit dem "richtigen" Timestamp arbeiten, also den Sekunden seit 01.01.1970.
Java:
long timestamp = System.currentMillis()/1000;
müsste das sein
 
Danke euch allen!

Das Problem war einfach nur, dass ich noch zwei ' einfügen musste (vor und hinter das tstamp).

Java:
String query = "INSERT INTO datenbank.dbo.[" + textTeile[0] + "] (UID, Zeit, Vorgabe) Values ('"  + textTeile[0] +"','" + tstamp  +"'," + textTeile[2] +")";

Jetzt klappt es 🙂.
 

Neue Themen


Zurück
Oben