Lautsprecher
Erfahrenes Mitglied
Hi,
ich habe so einen ähnlichen Beitrag schon mal unter SQL gepostet, aber bis jetzt konnte ich mein Problem immer noch nicht lösen. Ich hoffe, dass vielleicht jemand von Euch weiter weiß, denn dieses Problem drückt schon ziemlich auf dem Schuh.
Ich versuche unter Java mit folgender Anweisung einige Daten in unsere Tabelle auf dem MS SQL Server zu schreiben:
In datkommen_ein steht: 04.11.2005
In zeitkommen_ein steht: 13:41:00
check_in_date, check_in_time, haben alle den Type datetime in der SQL Datenbank!
Beim Ausführen des Statements steht dann folgendes in der Datenbank:
check_in_date 04.11.2005
check_in_time: 01.01.1900 13:41:00
Frage: Wie bekommt man das 01.01.1900 aus der Datenbank raus?
Wir sind jetzt schon soweit, dass wir vermuten, es müsse eingentlich an den Einstellungen in der Table auf dem SQL Server liegen. Wenn ich das Feld check_in_time als smalldatetime konvertiere, hat das keine Auswirkungen. Es steht immer noch 01.01.1900 davor. Mache ich char steht nur noch 13:41:00 drin. Da wäre soweit auch super, nur das Problem ist, das verschiedene VB Programme auch auf diese Tabelle zu greifen und direkt datetime auslesen. Alle VB-Pgm auf char-Einlesen zu änderen wäre Wahnsinn.
Außerdem wundere ich mich warum, dies nur beim schreiben mit Java auftritt!
Schreiben wir die Selben Werte mit einem VB-Pgm steht in
check_in_time nur 13:41:00 drinnen.
Hier ein Auszug aus dem VB-Pgm:
Warum das? Liegt das Problem vielleicht darin das VB den ODBC-Driver verwendet und
Java JDBC?
Deswegen meine Frage: Kann ich irgendwie in meinem Java-Pgm was machen, damit in der DB nur noch die Zeit und nicht der (Standardwert 01.01.1900) mit hinein geschrieben wird?
Danke
ich habe so einen ähnlichen Beitrag schon mal unter SQL gepostet, aber bis jetzt konnte ich mein Problem immer noch nicht lösen. Ich hoffe, dass vielleicht jemand von Euch weiter weiß, denn dieses Problem drückt schon ziemlich auf dem Schuh.
Ich versuche unter Java mit folgender Anweisung einige Daten in unsere Tabelle auf dem MS SQL Server zu schreiben:
Code:
String insertString =
"INSERT INTO Zeiterfassung_test (employee_ID, check_in_date,
check_in_time, " +
"group_id, shift, Host_Id, status,
working_time, pause)" +
"VALUES ('"+personalnr_ein+"','"+datkommen_ein+"',
' "+zeitkommen_ein+"','"+gruppenauswahl+"',
'"+schicht+"', '', '1', '', '')";
st.executeUpdate(insertString);
In datkommen_ein steht: 04.11.2005
In zeitkommen_ein steht: 13:41:00
check_in_date, check_in_time, haben alle den Type datetime in der SQL Datenbank!
Beim Ausführen des Statements steht dann folgendes in der Datenbank:
check_in_date 04.11.2005
check_in_time: 01.01.1900 13:41:00
Frage: Wie bekommt man das 01.01.1900 aus der Datenbank raus?
Wir sind jetzt schon soweit, dass wir vermuten, es müsse eingentlich an den Einstellungen in der Table auf dem SQL Server liegen. Wenn ich das Feld check_in_time als smalldatetime konvertiere, hat das keine Auswirkungen. Es steht immer noch 01.01.1900 davor. Mache ich char steht nur noch 13:41:00 drin. Da wäre soweit auch super, nur das Problem ist, das verschiedene VB Programme auch auf diese Tabelle zu greifen und direkt datetime auslesen. Alle VB-Pgm auf char-Einlesen zu änderen wäre Wahnsinn.
Außerdem wundere ich mich warum, dies nur beim schreiben mit Java auftritt!
Schreiben wir die Selben Werte mit einem VB-Pgm steht in
check_in_time nur 13:41:00 drinnen.
Hier ein Auszug aus dem VB-Pgm:
Code:
If kommen = True Then
Text1.Text = Date
Text2.Text = time
Text5.Text = mitarbeiter.name
Text6.Text = mitarbeiter.Personalnummer
Call warten(1)
rs_zeiterfassung.Open "Zeiterfassung", objConn, adOpenKeyset
With rs_zeiterfassung
.AddNew
!employee_ID = mitarbeiter.Personalnummer
!check_in_time = Text2.Text
!check_in_date = Text1.Text
!group_id = group
!Shift = schicht
!host_id = ""
!Status = 1
.update
End With
rs_zeiterfassung.Close
Call ausfallzeiten_summe
Call dsatzausgabe
Exit Sub
End If
Warum das? Liegt das Problem vielleicht darin das VB den ODBC-Driver verwendet und
Java JDBC?
Deswegen meine Frage: Kann ich irgendwie in meinem Java-Pgm was machen, damit in der DB nur noch die Zeit und nicht der (Standardwert 01.01.1900) mit hinein geschrieben wird?
Danke