Christian: MySQL, timestamp funktioniert nicht!

Guten Mittag,

Ich bin gerade dabei ein Gästebuch-Script zu schreiben, aber ich habe mit dem Datum ein riesen Problem. Ich habe das in Tutorials schon mal gelesen, dass das so gemacht wird, und auch in einem Buch, aber bei mir will es einfach nicht klappen.
Ich habe eine Spalte mit dem Typ "DATETIME" in meiner Tabelle. Beim einfügen einer neuen Zeile, wird da der Inhalt der MySQL-Funktion "NOW()" eingetragen. Nur das was drin ist, ist kein Timestamp - zumindest denke ich das, denn ein Timestamp war doch nur Zahlen?

2007-02-28 17:34:33

Und egal was ich mache, mein MySQL will einfach nicht passend annehmen.

Was kann ich machen? Oder eher gefragt: Was ist da los? Ist mein MySQL kaputt? Oder habe ich einen Fehler gemacht?

Danke

  1. echo $begrüßung;

    Aus deinen Ausführungen kann ich nicht genau entnehmen, was du möchtest. Bitte bemühe dich doch, genauer zu beschreiben, was du möchtest, wie du das machst und was du als Ergebnis bekommst.

    Ich habe eine Spalte mit dem Typ "DATETIME" in meiner Tabelle. Beim einfügen einer neuen Zeile, wird da der Inhalt der MySQL-Funktion "NOW()" eingetragen. Nur das was drin ist, ist kein Timestamp - zumindest denke ich das, denn ein Timestamp war doch nur Zahlen?

    Das was da drin ist, kann dir egal sein. Nicht egal sein sollte dir das, was dir MySQL ausgeben soll. Nutze gegebenenfalls die von MySQL angebotenen Formatierfunktionen. Wenn du beispielsweise einen Unix-Timestamp haben möchtest, vielleicht um ihn mit PHP weiterbearbeiten zu können, kannst du den in das Unix-Timestamp-Format umwandeln lassen (z.B. UNIX_TIMESTAMP()) (ggf. mit Verlust, da DATETIME einen wesentlich größeren Wertebereich als ein Unix-Timestamp hat).

    Und egal was ich mache, mein MySQL will einfach nicht passend annehmen.

    Was gibst du denn hin? Verwende die Formatierung, wie sie im MySQL-Handbuch angegeben ist, oder verwende eine Funktion, die einen Unix-Timestamp in ein von MySQL bevorzugtes Format umwandeln kann (z.B. FROM_UNIXTIME()).

    echo "$verabschiedung $name";

  2. Moin!

    Ich habe eine Spalte mit dem Typ "DATETIME" in meiner Tabelle. Beim einfügen einer neuen Zeile, wird da der Inhalt der MySQL-Funktion "NOW()" eingetragen. Nur das was drin ist, ist kein Timestamp - zumindest denke ich das, denn ein Timestamp war doch nur Zahlen?

    Ein Timestamp ist Integer, der die Anzahl der Sekunden seit dem 1.1.1970, 1:00 Uhr enthält, während ein DATETIME so aussieht:

    2007-02-28 17:34:33

    Viele Grüße,
    Robert

    1. Hallo Robert,

      Ein Timestamp ist Integer, der die Anzahl der Sekunden seit dem 1.1.1970, 1:00 Uhr enthält,

      Nein, das ist bestenfalls ein Unix-Timestamp - und bist Du Dir ganz sicher, was ein Uhr angeht?

      Die Welt ist nicht auf UNIX beschränkt, andere verstehen unter TIMESTAMP etwas anderes. MySQL sogar versionsabhängig unterschiedliche Dinge.

      während ein DATETIME so aussieht:

      2007-02-28 17:34:33

      Das kann z.B. ein typischer MySQL-TIMESTAMP-Wert für MySQL ab Version 4.1 sein, also ein TIMESTAMP. Natürlich könnte es auch ein MySQL-DATETIME-Wert sein.

      Andere DBMS sehen das anders und speichern völlig anders ab. Die Ausgabe der Daten kann sowieso DBMS-abhängig sich völlig von der Speicherung unterscheiden, so z.B. beim MS SQL-Server.

      Zum TIMESTAMP-Datentyp unter MySQL der obligatorische Link zum Handbuch:
      http://dev.mysql.com/doc/refman/5.0/en/datetime.html.

      Freundliche Grüße

      Vinzenz

      1. echo $begrüßung;

        Ein Timestamp ist Integer, der die Anzahl der Sekunden seit dem 1.1.1970, 1:00 Uhr enthält,
        Nein, das ist bestenfalls ein Unix-Timestamp - und bist Du Dir ganz sicher, was ein Uhr angeht?

        1 Uhr MEZ, ansonsten wird allgmein 0 Uhr UTC als Startzeitpunkt angegeben. Und einige Systeme kennen auch negative Unix-Timestamps, die dann Zeiten davor angeben.

        Die Welt ist nicht auf UNIX beschränkt, andere verstehen unter TIMESTAMP etwas anderes. MySQL sogar versionsabhängig unterschiedliche Dinge.

        Die unterschiedliche Magie beim Datensatzeinfügen bzw. -ändern kannst du nicht meinen, denn die ist in dem Fall nicht weiter relevant. Ansonsten hat sich nur das Format der Darstellung geändert. Seit Version 4.1 ist es an das Default-DATETIME-Format angepasst. Davor fehlten nur die Trennzeichen zwischen den Zahlen.

        echo "$verabschiedung $name";