# Aktuelles Datum in MySQL speichern



## Movementroboter (26. Sep 2013)

Guten Morgen Leute 
Habe bereits die IPv4 und den Loginnamen in die Datenbank geschrieben aber wie man das aktuelle Datum in die Datenbank hineinschreibt fällt mir nicht ein. :bloed:


Quellcode : 

```
VerbindungMySQL mysql = new VerbindungMySQL();
        Connection cn = VerbindungMySQL.ConnectDb();
        String sql = "Select * from loginuser where Benutzername = ? and Passswort = ? ";
        try {
            String Datum,Dauer,name,ip;
            String sSQL = "";
            Datum = 
            Dauer = 
            name = txtuser.getText();
            ip = InetAddress.getLocalHost().getHostAddress();
            
            pst = Conn.prepareStatement(sql);
            pst.setString(1, txtuser.getText());
            pst.setString(2, txtpw.getText());
            rs = pst.executeQuery();
            if (rs.next()){
                    try {
                        sSQL = "INSERT INTO verlauf (Datum,Dauer,Loginname,IPv4) VALUES (?,?,?,?)";
                        
                        
                        PreparedStatement pst = cn.prepareStatement(sSQL);
                        pst.setString(1, Datum);
                        pst.setString(2, Dauer);
                        pst.setString(3, name);
                        pst.setString(4, ip);
                        int n = pst.executeUpdate()
```


----------



## geqoo (26. Sep 2013)

Dazu gibt es die Funktion DATE(NOW()) in SQL.
Ist allerdings [STRIKE]englisches[/STRIKE] amerikanisches Format.

Müsstest du noch mit DATEFORMAT umbauen, wenn du deutsches Format haben willst.


----------



## Movementroboter (26. Sep 2013)

Hallo Gegoo,
danke erstmal für den Vorschlag 
ich bin gerade ein bisschen verwirrt und  verstehe dein Vorschlag nicht. Wie lautet denn der Befehl in Java für das aktuelle Datum ? 
Datumsformat = Englisch 

```
String Datum,Dauer,name,ip;
            String sSQL = "";
            Datum = ??????
            Dauer = 
            name = txtuser.getText();
            ip = InetAddress.getLocalHost().getHostAddress();
```

LG,
Movementroboter


----------



## Xeonkryptos (26. Sep 2013)

Um das aktuelle Datum in Java zu bekommen, am besten mal in die Klasse hier schauen: [JAPI]GregorianCalendar[/JAPI]


----------



## stg (26. Sep 2013)

Wenn du ein Datum abspeichern willst, wieso nimmst du dann einen String? Ist das Feld in der Datenbank ein varchar-Feld o.Ä.?

Bei einem Timestamp- oder Datumsfeld speichere doch einfach direkt das aktuelle Datum. Was ist da das Problem?


```
java.util.Date now = new java.util.Date();

preparedStatement.setTimestamp(1, new java.sql.Timestamp(now.getTime()) );
```

Wenn du aber wirklich einen String speichern willst oder musst, dann kannst du 
	
	
	
	





```
now
```
 mit Hilfe von 
	
	
	
	





```
SimpleDateFormat
```
 auf die von dir gewünschte String-Darstellung bringen.


----------



## Movementroboter (26. Sep 2013)

Hallo Leute 
irgendwie bin ich gerade vollkommen durcheinander 
habe es mal mit GregorianCalendar versucht


```
Calendar kal = new GregorianCalendar();                        
        kal1.setTime( new Date() );
        int year = kal1.get( Calendar.YEAR  );
        int mnth = kal1.get( Calendar.MONTH ) +1 ;           
        int date = kal1.get( Calendar.DATE  );
        System.out.println(year+"-"+mnth+"-"+date);
```

wie speicher ich nun das Datum hier ab ? 

```
String Datum,Dauer,name,ip;
            String sSQL = "";
            Datum = ??????
            Dauer = 
            name = txtuser.getText();
            ip = InetAddress.getLocalHost().getHostAddress();
```


----------



## Xeonkryptos (26. Sep 2013)

```
String datum = year+"-"+mnth+"-"+date;
```


----------



## Movementroboter (26. Sep 2013)

dankeschön


----------



## Movementroboter (26. Sep 2013)

ich poste das mal in diesen Thread da wir gerade dabei sind Datensätze in die DB einzutragen
Wie kann man die Laufzeit eines Programms in einen String schreiben und die Laufzeit in eine MySQL Datenbank schreiben ?


----------



## stg (26. Sep 2013)

Aus einem Datum eine Kalendar-Instanz zu erzeugen, diese dann in einzelne "Datums-Bausteine" zu zerlegen, dann integer-Werte als String interpretieren um dann daraus wieder einen String zusammenzusetzen, der wieder dem Datum vom Anfang entsprechen soll ... das ist doch einfach quatsch. Ein Kalendar ist interessant, wenn du mit Daten "rechnen" willst.

Das aktuelle Datum bekommst du über 
	
	
	
	





```
new java.util.Date()
```
. 
	
	
	
	





```
SimpleDateFormat
```
 ist die Klasse, die du nutzen solltest, um dann aus deinem Datum einen String zu machen! 

Ob es überhaupt sinnvoll ist diesen Umweg zu gehen, hast du aber noch nicht beantwortet. Schließlich kannst du über PreparedStatements auch direkt ein Datum in ein Datumsfeld schreiben, und solltest das auch machen, wenn es sich denn überhaupt um ein Datumsfeld in der Datenbank handelt (das hast du ja leide rnicht beantwortet)


----------



## stg (26. Sep 2013)

Movementroboter hat gesagt.:


> ich poste das mal in diesen Thread da wir gerade dabei sind Datensätze in die DB einzutragen
> Wie kann man die Laufzeit eines Programms in einen String schreiben und die Laufzeit in eine MySQL Datenbank schreiben ?



Ein Java-Datum ist intern nicht wirklich was anderes als ein long-Wert, wobei ein Datum als Millisekunden (ich glaube) seit dem 01.01.1970 gespeichert werden. Was da der genaue Stichtag ist, ist aber auch egal. Jedenfalls bekommst du über die 
	
	
	
	





```
getTime
```
 Methode die Anzahl dieser Milliksekunden. Differenz zwischen Datum in Milliksekunden am Ende der Prozedur minus Millisekunden zu Beginn ergibt dann die ungefähre Laufzeit deines Programms in Millisekunden. 
Das ist zwar keine wirklich schöne Form der Zeitmessung, wird für deine Zwecke aber vermutlich mehr als ausreichen.


----------



## GGK_01 (26. Sep 2013)

ich nehme an, dass das Datumsfeld in der MySQL DB ein Timestamp Datentyp ist...
daher muss vor dem Insert das JAVA Datum in einen Timestamp konvertiert vorliegen...



```
Timestamp ts = new Timestamp(endeDate.getTime());
```

den Insert machst du so:


```
String sqlInsert = "INSERT INTO "+database+ " (datetime) VALUES (?);";"
preparedStatement = connect.prepareStatement(sqlInsert);
preparedStatement.setTimestamp(2, ts);
preparedStatement.executeUpdate();
```


----------

