Rossi: mysql - zum Thema DATUM

Bin ABSOLUTER mysql-Neuling und hab folgende Frage: Ich möchte eine Datenbank ( Gästebuch, Feedback,... ) anlegen, in die jeweils das aktuelle Datum des Eintragtages geschrieben wird.

Ich habe beim Erstellen der Tabelle folgende Einstellungen genommen :

Feld : Datum
Typ : DATE
Länge :
Attribute :
Null : not null
Standard :
Extra :

Wenn ich die Tabelle dann kreiren lasse, klappt dies und dann steht im Standard-Feld " 0000-00-00 " drin.

Wenn ich das richtig verstehe, geht das nicht anders in sql. Wie schafft man es dann aber, bei einer php Seite das Datum als Tag - Monat - Jahr auszugeben?

Und meine 2. Frage : Geht das, daß er bei jedem neuen Datensatz automatisch das neue Datum reinschreibt ( so wie bei der ID ) oder muß ich das mit php extra anweisen? Weil wenn ich beim Date-Typ " auto increment" nehme, kommt immer die Fehlermeldung, daß dies nicht geht.

Danke für Hilfe!

Rossi

  1. Wenn ich die Tabelle dann kreiren lasse, klappt dies und dann steht im Standard-Feld " 0000-00-00 " drin.

    »

    Wenn ich das richtig verstehe, geht das nicht anders in sql. Wie schafft man es dann aber, bei einer php Seite das Datum als Tag - Monat - Jahr auszugeben?

    Was willst Du? Du kannst mysql anweisen, bei einer insert oder update Aktion das aktuelle Datum zu schreiben, wenn ich mich recht entsinne war das "NOW()". Das also in der insert-Anweisung sollte das Datum schreiben.

    Wenn Du das Datum in PHP setzen möchtest, hast Du mehr Möglichkeiten.

    echo date("Y-m-d", mktime());

    gibt Dir also "2003-11-26" aus. Es gibt da viele Optionen, Du findest sicher das, was Du brauchst. Siehe auch http://de.php.net/manual/de/function.date.php

    Und meine 2. Frage : Geht das, daß er bei jedem neuen Datensatz automatisch das neue Datum reinschreibt ( so wie bei der ID ) oder muß ich das mit php extra anweisen? Weil wenn ich beim Date-Typ " auto increment" nehme, kommt immer die Fehlermeldung, daß dies nicht geht.

    Ich würde mal versuchen, den Standard-Wert auf NOW() zu setzen. Lies mal http://www.mysql.com/doc/en/DATETIME.html, da sollte es drin stehen.

    Gruß: Tobias

    1. hi,

      Ich würde mal versuchen, den Standard-Wert auf NOW() zu setzen. Lies mal http://www.mysql.com/doc/en/DATETIME.html, da sollte es drin stehen.

      Zitat aus mysql-manual: Vorgabewerte müssen Konstanten sein. Das heißt zum Beispiel, dass Sie den Vorgabewert einer DATE-Spalte nicht als Wert einer Funktion wie NOW() oder CURRENT_DATE setzen können

      mit anderen Worten es geht nicht, du mußt über php mit einer FUnktion immer einen wert eintragen und kannst nicht den autowert nehmen, um ein aktualles datum in den datensatz zu bekommen

      Ilja

      1. hi,

        Ich würde mal versuchen, den Standard-Wert auf NOW() zu setzen. Lies mal http://www.mysql.com/doc/en/DATETIME.html, da sollte es drin stehen.

        Zitat aus mysql-manual: Vorgabewerte müssen Konstanten sein. Das heißt zum Beispiel, dass Sie den Vorgabewert einer DATE-Spalte nicht als Wert einer Funktion wie NOW() oder CURRENT_DATE setzen können

        mit anderen Worten es geht nicht, du mußt über php mit einer FUnktion immer einen wert eintragen und kannst nicht den autowert nehmen, um ein aktualles datum in den datensatz zu bekommen

        du kannst aber in der query einfach für den wert des feldes NOW() schreiben, um die gleichnamige mysql-funktion aufzurufen.

        gruss,
        wahsaga

      2. Hallo Ilja

        Zitat aus mysql-manual: Vorgabewerte müssen Konstanten sein. Das heißt zum Beispiel, dass Sie den Vorgabewert einer DATE-Spalte nicht als Wert einer Funktion wie NOW() oder CURRENT_DATE setzen können

        Mal ganz davon abgesehen ist CURDATE() wohl angemessener für eine Spalte vom Typ DATE ist. NOW() wäre sinnvoll, wenn man eine Spalte des Typs DATETIME hat.

        mit anderen Worten es geht nicht, du mußt über php mit einer FUnktion immer einen wert eintragen und kannst nicht den autowert nehmen, um ein aktualles datum in den datensatz zu bekommen

        Ganz so schwierig ist es nun doch nicht:

        mysql_query('INSERT INTO ... (Datum) VALUES (CURDATE());');

        führt durchaus zum gewünschten Ergebnis.

        Schöne Grüße,

        Johannes

        --
        ss:| zu:} ls:[ fo:} de:] va:} ch:) sh:( n4:| rl:( br:< js:| ie:{ fl:( mo:}
    2. hi,

      Wenn Du das Datum in PHP setzen möchtest, hast Du mehr Möglichkeiten.

      echo date("Y-m-d", mktime());

      gibt Dir also "2003-11-26" aus. Es gibt da viele Optionen, Du findest sicher das, was Du brauchst. Siehe auch http://de.php.net/manual/de/function.date.php

      date arbeitet aber mit einem unix-timestamp - als spaltentyp in der tabelle hat er aber DATE gewählt. das ist nicht ohne weitere umformungen kompatibel.

      gruss,
      wahsaga