# [MYSQL] Datum der letzte Aktualisierung einer Tabelle



## hartgendorn (22. April 2005)

Hallo,

vielleicht einfach - bestimmt sogar -, aber ich finde die Funktion nicht.

Gibt es in MYSQL die Möglichkeit, das Änderungsdatum einer Tabelle herauszufinden? Ich möchte nämlich gerne bei der Ausgabe die ANzeige "Stand: tt.mm.jjjj" mit aufführen. Bei phpmyadmin finde ich eine solche Angabe, weiß aber nicht, wie es gemacht wird.

Oder muss ich es über ein zusätzliches Feld realisieren und die aktuelle Zeit eintragen?

Danke!


----------



## ManicMarble (22. April 2005)

```
SHOW TABLE STATUS LIKE 'tabellenname'
```
Dann das Feld `Update_time` auslesen.


----------



## Mike Rofon (11. September 2005)

Ich hab das mal probiert... aber 

     $test = "SHOW TABLE STATUS LIKE 'tabellenname' ";
     $testresult = mysql_query ($test, $verbindung) or die (fehlerMeldung (__LINE__, $sql));
     echo "Letztmalig aktualisiert am " . date("d.m.Y H:i", $Update_time);

liefert mir den 1.1.1970.  Was mach ich falsch?


----------



## heddesheimer (12. September 2005)

aber: zeigt denn das Feld update_time nicht nur an, wann die Tabelle selbst das letzte Mal geändert wurde.

Ich habe die Frage eher so verstanden, dass der aktuelle Stand der eingetragenen Daten angezeigt werden soll. Muss man da nicht ein Feld vom typ TIMESTAMP einfügen, dass dann bei Neueintrag oder Änderung von Daten automatisch den aktuellen Timestamp speichert?

Gruß Marian


----------



## ManicMarble (12. September 2005)

Hallo,

@heddesheimer:
Zitat aus der MySQL-Doku (http://dev.mysql.com/doc/mysql/en/show-table-status.html):


> Update_time
> When the data file was last updated.


Bei MyISAM-Tabellen wird mit jeder Änderung an den Daten das Datei-Datum verändert, damit müsste das eigentlich passen. Wie das bei InnoDB ist, weiß ich nicht so recht...

@Mike Rofon:
Du machst die Abfrage (mysql_query) und dann wandelst Du die offensichtlich bis dahin nicht existierende Variable $Update_time mit date() in ein Datum um? Hä?
Also ich fürde das eigentlich so machen:

```
$test = "SHOW TABLE STATUS LIKE 'tabellenname' ";
$testresult = mysql_query ($test, $verbindung) or die('Fehler: ...');
$row = mysql_fetch_assoc($testresult);
$datum = $row['update_time'];
mysql_free_result($testresult);
echo "Letztmalig aktualisiert am " . $datum;
```

Grüße,
_Martin_


----------



## heddesheimer (12. September 2005)

> Update_time
> When the data file was last updated.



Stimmt, mit MySQL 4.1 funktioniert das. Ich hatte es mit MySQL 3.23 probiert und da klappte es noch nicht.

Gruß Marian


----------



## Mike Rofon (12. September 2005)

kommt leider keine Datums-ausgabe...
Kann aber daran liegen daß der MySQL-Server ne Version 3.x ist.... hatte ich vergessen dazu zu sagen... sorry


----------



## heddesheimer (12. September 2005)

in dem Fall kannst du in der Tabelle eine Spalte vom Typ TIMESTAMP z.B. mit dem Namen last_update anlegen. Bei MySQL 3.x wird die erste Spalte mit diesem Typ automatisch aktualisiert, wenn Daten geändert oder eingefügt wurden.

Um das letzte Datum abzurufen machst du diese Abfrage:


```
select 
max(last_update) as datum 
from tabelle 
group by last_update
```

in dem Ergebnisfeld "datum" steht dann der gesuchte Timestamp im Format YYYYMMDD

Gruß Marian


----------



## Mike Rofon (16. September 2005)

Vielen Dank für die Beteiligung hier... habe eine Lösung gefunden.


----------



## schlittenbacher (28. Februar 2010)

Hallo zusammen.

Ich habe das gleiche Problem und habe mit den Hinweisen hier versucht, zu einer Lösung zu kommen. Mit Müh' und Not habe ich das Script soweit umgesetzt, dass es läuft - jedoch auch ohne ein Datum auszugeben. Die Select-Anweisung "Last-Datum" verstehe ich nicht. Kann hier jemand ein vollständiges Scipt einstellen? Wie ist der Wert "$verbindung" zu verstehen? Wie muss der Wert aussehen?


----------



## Yaslaw (1. März 2010)

Manchmal postet man hier Beispiele ohne korrekte bezeichnung. last_datum steht da stellvertrettend für den Feldnamen des zu prüfenden Datums.

$verbindung ist eine Variable in PHP. Ich denke es beinhaltet die Connection zur DB die mit mysql_connect() geöffnet und mit mysql_select_db() die DB ausgewählt wurde.


----------

