Datum und Uhrzeit in Datenbank falsch hinterlegt

justgame

Mitglied
Guten Tag,

ich stehe vor einem Problem.
Undzwar möchte ich über ein inputFeld ein Datum eingeben und diesen in mener MySql Datenbank speicherrn. Soweit so gut. Klappt auch alles wunderbar.
Allerdings wird das Datum welches ich in das inputFeld eingebe nicht richtig in der Datenbank hinterlegt.
Die Zeit wird immer +1 oder +2 abgespeichert. Das heisst gebe ich z.B. 2015-01-18 12:45:00 ein
wird es als 2015-01-18 14:45:00 hinterlegt...

der relevante Code sieht so aus:

Java:
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = fmt.format(termin);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date dt = sdf.parse(date);
java.sql.Timestamp sqlDate = new java.sql.Timestamp(dt.getTime());					
ps.setTimestamp(2, sqlDate);

Ich bedanke mich für eure Hilfe
MfG
 
Wie kontrollierst du den was in der DB drin steht? Hört sich für mich nach einer UTC/Sommer-Winterzeit Differenz an. Was passiert denn wenn du die Daten per Code wieder ausliest? Sind sie dann auch falsch?

Es ist halt nicht besonders schön ohne Timezone und SDTime zu arbeiten. Die arme DB kann ja nicht wissen aus welchem Land der Eintrag kommt und welche Zeit denn nun wirklich aktuell da gerade ist.

Gruß

Claus
 
Da ich mit XAMPP und phpmyadmin arbeite, hab ich die Tabelle auch manuell erstellt. Also nicht direkt über eine SQL-Anweiseung.
TYP:Timestamp
Standart: Current_timestamp
Attribute: on update current_timestamp

@thalius ich schau gleich mal nach
 
Zuletzt bearbeitet:
Ich hab das jetzt mal als mit

Java:
System.out.println(rs.getDate("termin"));
ausgeben lassen, und die Uhrzeit wird überhaupt nicht angezeigt komisch


"Es ist halt nicht besonders schön ohne Timezone und SDTime zu arbeiten." Wie könnt ich das Lösen?
 
Wenn man den Datentyp timestamp verwendet, wird die übergebene Zeit automatisch in die UTC-Zeit umgerechnet.

Beim Schreiben wird automatisch umgerechnet, beim Auslesen wird automatisch zurück-umgerechnet.

Wenn du also die Daten wieder mit deinem Java-Programm ausliest, musst du wieder deine ursprüngliche Zeit angezeigt bekommen.
 
Sorry, kleiner Fehler hier

Java:
    System.out.println(rs.getTimestamp("termin"));

jetzt wird alles angeziegt allerdings genauso wie sie in der Datenbank hinterlegt ist und nicht wie ich sie eingegeben habe...

Gibt es denn keine Möglichkeit die Zeit schon gleich beim hinterlegen in die Datenbank richtig abzuspeichern?
 
Zuletzt bearbeitet:
Dann würd ich es mal mit dem Datentyp DateTime statt mit Timestamp in MySQL versuchen, und schaun, ob es dann immer noch so seltsam ist. Wenn ja, liegts irgendwo am Java. Bei DateTime wird nichts automatisch umgewandelt.
 
Zuletzt bearbeitet:
Ich hab es auch schon mit DateTime probiert. Der Fehler liegt vermutlich irgendwo im Java Code, denn ich lasse mir vor dem Schreiben in die Datenbank, selbigen noch über systemout print in der Console ausgeben. Und dort wird die Zeit falsch dargestellt. Wie gesagt aus 15:00:00 wird plötzlich 17:00:00 etc.

Java:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sdf.format(termin);
							
System.out.println(date);
ps.setString(2, date);
 

Neue Themen


Zurück
Oben