MySQL Datetime wird auf Sekunden gerundet, soll es aber nicht

thomas0286

Mitglied
Hi,

heute habe ich mal eine Frage zum Thema Datenbanken.

In meine Tabelle schreibe ich ein DateTime, welches wie folgt erzeugt wird:
Java:
Date d = new Date();
Timestamp t = new Timestamp (d.getTime());

Lasse ich mir t mit
Java:
System.out.println(t);
ausgeben, so erhalte ich z.B. diesen Wert: "2013-11-21 18:30:15.078".

Lese ich das ganze nun aus der Datenbank aus mit:
SQL:
SELECT * FROM foo where bar='2013-11-21 18:30:15.078'
so ist das ResultSet leer.

Lasse ich mir alle Ergbenisse aus "foo" anzeigen, stelle ich fest das der Timestamp wert gerundet wurde. Statt "2013-11-21 18:30:15.078" befindet sich der Wert "2013-11-21 18:30:15" in der Tabelle.

Ich habe dies bereits mit den Feldtypen Datetime und Timestamp getestet. Bei beiden der selbe fehler. Warum rundet der SQL-Server die Zeit?

Grüße,
Thomas
 
Hallo eine Möglichkeit wäre natürlich mit "between" das ganze abzufragen.

Ich würde allerdings alles in Millisekunden abspeichern und diese kannst du dann ja ganz einfach mit ein paar Methoden (selbst geschrieben) umrechnen. Mir ist keine Sprache bekannt, die nicht mit den Millisekunden als Zeitangabe umgehen könnte.
Des Weiteren muss du dir wirklich nur einmal Gedanken machen wie du das anstellst. Einfache Methoden machen dann den Rest.
 
Die Speicherung in Millisekunden ist an sich eine super Idee. Allerdings wird das Datetime bzw. Timestamp Feld nicht immer vom Java Programm befüllt. Wenn der SQL-Server den Wert als Default-Wert anlegt, wird ebenfalls gerundet. Ich brauche aber die Angabe der genauen Zeit um ein Objekt eindeutig identifizieren zu können. Kann man so was eventuell im SQL-Server irgendwo einstellen?
 

Neue Themen


Zurück
Oben