mysql - zum Thema DATUM
Rossi
- datenbank
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
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
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
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
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
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