Andreas Korthaus: Datetime/timestamp

Beitrag lesen

Hallo!

zu Deutsch: Die erste Timestamp - Spalte hat als Defaultwert die aktuelle Serverzeit. Wobei ich das zur Zeit nicht verifizieren kann; zudem halte ich das für merkwürdig, da man ja eine Konstante als Default angibt, warum sollte also mysql etwas anderes verwenden? - Wie dem auch sei: Vielleicht hilfts dir ja.

Die erste Timstamp Spalte enthält den aktuellen timestamp einer Datensatzmanipulation wie INSERT oder UPDATE, vorausgesetz Du überschreibst den Wert nicht manuell. Jede weitere timestamp-Spalte muß manuell gesetzt/manipuliert werden.

Ich habe z.B. eine Tabelle(Name: "table") mit den Spalten

name | zeit

Wenn die Spalte "zeit" das Format timestamp(14) hat, dann kannst Du mit

INSERT INTO table SET name='Philipp'

einen Eintrag machen, und es wird automatisch der aktuelle Timestamp in die Spalte "zeit" eingefügt.

Wenn Du

INSERT INTO table SET name='Philipp', zeit = 'was weiß ich für ein Zeitpunkt'

einfügst, dann wird halt "was weiß ich für ein Zeitpunkt" in die zeit-Spalte eingefügt, solange das Format gültig ist.

Wenn Du beim SELECT aber ein anderes Format ausgeben willst, kannst Du das Datum formatieren wie Du möchtest, so mit http://de.mysql.com/documentation/mysql/bychapter/manual.de_Reference.html#IDX1264

SELECT name, DATE_FORMAT(zeit,'%D%y%a%d%m%b%j') AS zeit....;

Dann hast Du später in "zeit" Deinen so wie Du es möchtest formatierten Timestamp. Ich mache das dann aber noch etwas anders, ich verwende meist

SELECT name, UNIX_TIMESTAMP(zeit) AS zeit....;

dann gebe ich in PHP dann z.B. echo date("d.m.Y",$row["zeit"]) aus.

Die Möglichkeiten sind unendlich, man kann auch direkt einen Unix-Timstamp eintragen, nur sobald man von dem mysql-Timestamp Format der Spalte Abstand nimmt, dann muß man sich selbst beim INSERT und UPDATE ums Eintragen des Datums kümmern, halt mit

INSERT INTO table SET name='Philipp', zeit = now()

das ginge so z.B. mit einer DATETIME Spalte. Oder man nimmt eine einfache INT oder CHAR Spalte und trägt direkt den Unix-Timestamp ein, so wie

INSERT INTO table SET name='Philipp', zeit = ".time().";
                                               ^^^^^^
                                             Das ist eine PHP-Funktion in der Query

letzeres ist meine Lieblingsvariante mit INT(10), vermutlich(hoffentlich) das schnellste beim lesen.

Wie gesagt, die Möglichkeiten sind schier unendlich! Einfach rumprobieren was am besten zum eigenen Programmierstil passt!

Viele Grüße
Andreas

PS: Lang nichts mehr von Dir gehört ;-) Hab letze Zeit viel mit MySQL rum-experimentiert und Dank Michael ne ganze Menge gelernt, hab probiert eien eigene mySQL-basierte Suche für das SELFArchiv zu bauen, und das werde ich auch beenden ;-) die letzte Woche war nur etwas stressig bei mir.