dedlfix: MySQL Timestamp

Beitrag lesen

Tach!

Einen Mischbetrieb kann man schlecht vermeiden, wenn man PHP verwendet, denn da hat man Unix-Timestamps. Die Kommunikation mit MySQL verlangt immer eine Umwandlung, entweder auf MySQL-Seite oder auf PHP-Seite.
Ich glaube du hast mich missverstanden:

Kann durchaus sein. Deine Aussage ließ da ja viel Spielraum.

TIMESTAMP unter MySQL verhält sich wie DATETIME (nur der Wertbereich ist eingeschränkt) - das ist schon ein Mischbetrieb.

Genauer: TIMESTAMP verhält sich in der Formatierung der Darstellung wie ein DATETIME. Ansonsten sind schon noch ein paar Unterschiede im Wertebereich und auch Verhalten vorhanden.

Entweder man arbeitet unter PHP und MySQL mit DATETIME (oder ein Derivat dessen - also besser TIMESTAMP) und nutzt unter PHP dann strftime() und strtotime() zum Konvertieren nach time()

DATETIME und TIMESTAMP kann man nicht ohne Anwendungsfall als besser oder schlechter als das jeweils andere werten. TIMESTAMP hat trotz des eingeschränkten Wertebereichs sein Einsatzgebiet mit Vorteilen gegenüber DATETIME (z.B. automatisches Ausfüllen bei Neueinträgen und Updates, also wenn man ihn wie vorgesehen als Zeitstempel und nicht als beliebigen Datumswert einsetzt).

Oder aber man nutzt time() direkt in PHP und speichert diesen als Integer in MySQL.

Das Konvertieren kann man auch mit den bereits genannten UNIXTIME-Funktionen in MySQL erledigen. Das ist meines Erachtens der effizienteste Kompromiss für beide Seiten.

Ersteres hat den Vorteil, dass man sämtliche Zeitoperationen in der Datenbank machen kann, aber auf PHP-Seite erst umwursteln muss, das zweite hat den Vorteil, dass man nicht umwursteln muss, aber Datumsoperationen in PHP durchgeführt werden müssen.

Mit Konvertierung gehen Zeitoperationen auch im DBMS. Man muss nur aufpassen, wie man die Abfrage formuliert, sonst leidet die Performance. Zum Beispiel ist jeden Feldwert umzurechnen und dann zu vergleichen ungünstiger als jeden Feldwert mit einem umgerechneten Wert zu vergleichen.

dedlfix.