Unerwartete Datenbankausgabe bei "select now()" (es wird ein .0 angehängt)

Tharsonius

Bekanntes Mitglied
Hallo zusammen,

ich habe ein etwas unschönes Phänomen und weiss nicht woher das kommt. Vielleicht könnt Ihr mir dabei helfen.


Ich habe eine MySQL Datenbank, auf die ich mittels Java zugreife. Als Entwicklungsumgebung verwende ich Eclipse.

Grundlegend sind Verbindungsaufbau und Abfragen gar kein Problem, alles funktioniert so wie es soll.

Einzig die query "SELECT NOW();" bereitet mir Kopfzerbrechen, hier habe ich das Phänomen, dass ich nicht das Ergebnis bekomme, was ich erwarte.

Ich erwarte
'2010-01-14 09:15:18'

Ich bekomme
'2010-01-14 09:15:18.0'


Aus irgend einem Grund bekomme ich an die Sekunden am Ende ein '.0' angehängt, welches ich an dieser Stelle nicht erwarte.
Ich habe unter phpMyAdmin ein select now() auf die selbe Datenbank losgelassen, hier kommt das korrekte Ergebnis.

Ich verwende folgende Methode, um das Datum aus der Datenbank zu lesen:


Java:
public final class DBHandle
{
[...]

	public final DBAbfrageErgebnis selectFromDataBase(String query, DBDatenTypen[] typen)
	{
		if(open == false)
			return null;
		if(typen.length <= 0)
			return null;
		Statement stmt;
		try
		{
			stmt = con.createStatement();
		}
		catch(SQLException e)
		{
			return null;
		}
		ResultSet rs;
		try
		{
			rs = stmt.executeQuery(query);
		}
		catch(SQLException e)
		{
			try
			{
				stmt.close();
			}
			catch(SQLException f)
			{
				// Nix tun
			}
			return null;
		}
		DBAbfrageErgebnis ergebnis = new DBAbfrageErgebnis();
		try
		{
			while (rs.next())
			{
				ergebnis.neueZeile();
				for (int j = 0; j < typen.length; j++)
				{
					switch (typen[j])
					{
						case LONG:
							ergebnis.addLong(new Long(rs.getLong(j + 1)));
							break;
						case DOUBLE:
							ergebnis.addDouble(new Double(rs.getDouble(j + 1)));
							break;
						case BOOLEAN:
							ergebnis.addBoolean(new Boolean(rs.getBoolean(j + 1)));
							break;
						case STRING:
							ergebnis.addString(rs.getString(j + 1));  // An dieser Stelle wird 
							break;
						default:
							throw new SQLException();
					}
				}
			}
		}
		catch(SQLException e)
		{
			try
			{
				rs.close();
			}
			catch(SQLException f)
			{
				// Nix tun
			}
			try
			{
				stmt.close();
			}
			catch(SQLException f)
			{
				// Nix tun
			}
			return null;
		}
		ergebnis.gefuellt();  // Keiner weiteren Aenderungen am Ergebnis moeglich
		try
		{
			rs.close();
		}
		catch(SQLException e)
		{
			try
			{
				stmt.close();
			}
			catch(SQLException f)
			{
				// Nix tun
			}
			return null;
		}
		try
		{
			stmt.close();
		}
		catch(SQLException e)
		{
			return null;
		}
		return ergebnis;
	}
}

Und hier ein Beispielaufruf:
(Für dieses Beispiel gekürzte Fassung)
Java:
private lese Datum()
{
	DBAbfrageErgebnis ergebnis = dbhandle.selectFromDataBase("SELECT NOW();", DBDatenTypen.STRING);
        System.out.println(ergebnis.getString());
}


Ausgabe ist:
2010-01-14 09:15:18.0


Ich habe auch testweise ein
System.out.println(rs.getString(j+1));
in die obere Methode geschrieben. Ausgabe ist dann:

2010-01-14 09:15:18.0
2010-01-14 09:15:18.0


Ich bin für jede Idee dankbar, da ich leider keine Ahnung habe wo ich da noch suchen soll.
Ich kann in der weiterverarbeitenden Funktion das ganze zwar problemlos korrigieren und die .0 rausfiltern aber ich wüsste zuvor halt gerne wo die her kommen.
 

Sempah

Bekanntes Mitglied
Bekommst du das gleiche Ergebnis wenn du direkt auf der DB select now() abfragst oder nur in Verbindung mit deinem Code?
 

tfa

Top Contributor
Warum verwandelst du das Datum in einen String? Verwende doch java.sql.TimeStamp oder DateTime.
Der JDBC-Treiber wandelt das Datumsobjekt eben auf diese Art in einen String um.
 

Tharsonius

Bekanntes Mitglied
@Sempah:
Ich habe nur phpMyAdmin, um auf die Datenbank zuzugreifen, dort habe ich die .0 aber nicht.


@tfa:
Ich brauche das ganze halt als String, aber selbst wenn ich mir mal einen Timestamp ausgeben lasse bekomme ich da die .0 am Ende.

Ich habe im case STRING
einfach mal
Java:
	try
	{
	System.out.println("Stamp: "+rs.getTimestamp(j + 1));
	}
	catch (Exception e) {}
	System.out.println("String: "+rs.getString(j + 1));
eingefügt, mit dem Ergebnis, dass ich diese Ausgabe zusätzlich bekomme:

Stamp: 2010-01-14 10:21:09.0
String: 2010-01-14 10:21:09.0

Auch hier ist ein .0 am Ende angehängt.


Wenn ich die Query nun aber abändere in "SELECT LEFT(NOW(),19);"

Dann bekomme ich die Ausgabe:
Stamp: 2010-01-14 10:21:09.0
String: 2010-01-14 10:21:09
2010-01-14 10:21:09
 
S

SlaterB

Gast
klappt das auch um 9.00 morgens? hoffentlich steht dann 09 statt 9 ;)

lies lieber ein Date/ TimeStamp aus, mach irgendwie ein java.util.Date draus und verwende SimpleDateFormat, falls du einen String benötigst
 

tfa

Top Contributor
Du kannst dir den Timestamp mit einem Formatter oder DateFormat wie du willst in einen String umwandeln. Das klappt immer mit jeder Datenbank und jedem Treiber in jeder Version.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Informix JDBC: Unerwartete Dateien Datenbankprogrammierung 6
M Datenbankausgabe .jsp per SQLite Datenbankprogrammierung 7
krgewb SELECT ohne IdClass-Annotation Datenbankprogrammierung 3
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
OnDemand Select * from bringt keine Rückgabe Datenbankprogrammierung 49
OnDemand Select vs Update ins blaue, was ist teurer? Datenbankprogrammierung 11
M JPA: select all mit unterschiedlichem Tablename Datenbankprogrammierung 2
A MySQL Select und Insert in Java Datenbankprogrammierung 15
J JPA: Wie sieht der select aus? Datenbankprogrammierung 2
D geänderte SELECT Abfragen Datenbankprogrammierung 15
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
T sqlite select Datenbankprogrammierung 12
D Oracle NullPointerException bei select mit Null Values Datenbankprogrammierung 5
F MySQL Was bedeuten die Einzelnen Zeichen in Select Querrys? Datenbankprogrammierung 1
J SQL SELECT mit einem Array Datenbankprogrammierung 1
J SELECT Abfrage/Suche Datenbankprogrammierung 4
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
M SQL-Exception trotz funktionierendem SELECT Datenbankprogrammierung 4
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
C HSQLDB Platzhalter in SELECT Datenbankprogrammierung 6
I SELECT bei Datenbankverbindung Datenbankprogrammierung 6
C MySQL JPA - namedQuery (SELECT) -getResultList() - liefert falsches Ergebnis Datenbankprogrammierung 1
S select: alle ergebnisse ermitteln Datenbankprogrammierung 5
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
H HSQLDB insert .... values("test1",select test2 from foo) Datenbankprogrammierung 2
D JDBC insert mit select abfrage Datenbankprogrammierung 5
W SELECT oder Programm-Logik Datenbankprogrammierung 10
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
T MySQL Dynamisch Suchen Select Datenbankprogrammierung 4
D ArrayList in Select Datenbankprogrammierung 12
N Select mit join Datenbankprogrammierung 3
F Oracle select sum() join select sum() Datenbankprogrammierung 9
B SELECT ja - INSERT nein (MySQL) Datenbankprogrammierung 3
R Oracle Performance bei SELECT mit vielen Reihen Datenbankprogrammierung 5
T MySQL Db select * und Insert schlagen fehl Datenbankprogrammierung 2
I Select-Statement optimieren Datenbankprogrammierung 14
M Variable in SQL SELECT * FROM ... WHERE mithilfe von PreparedStatement benutzen? Datenbankprogrammierung 28
R Derby/JavaDB Möglichkeit von einem Random Select! Datenbankprogrammierung 6
B Mehrfachschachtelung SELECT Datenbankprogrammierung 2
T MySQL Select: Zusammenfassen von Daten und bilden von Durchschnitt? Datenbankprogrammierung 4
GianaSisters MySQL Datenbank Select error Datenbankprogrammierung 5
R Select Statement als temporärer Table Datenbankprogrammierung 7
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
J [Hibernate] Select Statement Datenbankprogrammierung 4
A SQLite SELECT von ungleichen Spaltenpaaren Datenbankprogrammierung 10
Eldorado MySQL SELECT mit GROUP BY und INNER JOIN Datenbankprogrammierung 2
M Hibernate JPQL SELECT optional? Datenbankprogrammierung 2
C Datenbank-Abfrage, if im Select Datenbankprogrammierung 9
G Aufruf von SELECT INTO Datenbankprogrammierung 8
B H2 PreparedStatement SELECT * FROM ? Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
S Select eines bestimmten Datensatzes Datenbankprogrammierung 4
M Select * from mydaten where ... Datenbankprogrammierung 4
M Probleme bei Select in Schleife Datenbankprogrammierung 7
G SELECT liefert leere Zeilen Datenbankprogrammierung 32
M SELECT longtext -> als String behandeln Datenbankprogrammierung 6
H Select in einem Select Datenbankprogrammierung 7
G Select- Abfrage Datenbankprogrammierung 19
S Insert mit Select Datenbankprogrammierung 6
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
R SELECT aus hsqldb mit Parameter Datenbankprogrammierung 2
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
A Problem mit einem Select-Befehl Datenbankprogrammierung 5
E Neues select auf ein vorhandenes Resultset Datenbankprogrammierung 11
A SELECT-Anweisung liefert keine Datensätze zurück Datenbankprogrammierung 9
S Select über mehrere Datenbanksysteme Datenbankprogrammierung 14
P SELECT Datenbankprogrammierung 20
T select Abfrage in Java Integer speichern ? Datenbankprogrammierung 2
B fehler bei select befehl Datenbankprogrammierung 5
S Select von bis in DB2 Datenbankprogrammierung 8
S Select mit PreparedStatement Datenbankprogrammierung 2
E Ein If und ein SELECT in Oracle? Datenbankprogrammierung 2
T Select Statement auf Relation Datenbankprogrammierung 3
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
4 Probleme mit Select abfrage Datenbankprogrammierung 4
G Fehler in der select-Abfrage Datenbankprogrammierung 3
N SELECT: Datensatz sperren Datenbankprogrammierung 6
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6
T LIMIT In SELECT Anweisung Datenbankprogrammierung 4
R Select und Insert in Schleife - Problem mit ResultSet Datenbankprogrammierung 2
G SELECT Name= " " verhindern Datenbankprogrammierung 5
G Syntax für Select - Abfrage mit Variablen Datenbankprogrammierung 39
J SELECT-Statement Datenbankprogrammierung 4
R Select auf der Konsole ausgeben Datenbankprogrammierung 2
D brauche mal kurz hilfe bei einem select-stmt Datenbankprogrammierung 6
G Select-Abfragen sind sehr langsam Datenbankprogrammierung 7
D HSQLSB SELECT Datenbankprogrammierung 9

Ähnliche Java Themen


Oben