Mailinglisten-Archive |
Hannes H. wrote: > Hallo Leute! > > Bisher habe ich Datum und Datum+Zeit immer als Unix Time Stamp in ein > herkömmliches INT-Feld der Datenbank gespeichert. > > Da es aber auch spezialisierte Date und Time-Feld-Typen in MySQL gibt, > stellt sich für mich die Frage: Ist es sinnvoller Datum und Zeit in > diese Felder zu schreiben? Der Vorteil vom normalen Intager wäre, dass > ich weiß, dass ich immer einen Time Stamp zurück bekomme und den dann > entsprechend behandeln kann/muss. > > Wie haltet ihr das in euren Applikationen? Früher habe ich immer die Datenfelder Datetime oder timestamp genommen. Mittlerweile bin ich jedoch davon abgekommen und verwende lieber einfache INTs. Es kommt allerdings natürlich darauf an, was du damit vor hast. Wenn du willst, dass sich ein timestamp bei jedem UPDATE-Aufruf auch immer aktualisiert, dann ist der Datentyp timestamp das richtige für dich. Wenn du das nicht willst, kann der Datentyp extrem nerven, weil du dann sowas wie UPDATE ts=ts,... in jedem Query haben musst. Dabei ist es eigentlich gerade Sinn der Sache, dass man sich sowas sparen kann. Ich meine man kann dieses automatisch Anpassen auch abstellen (zu lange her, dass ich mich damit beschäftigt habe ;-)), aber das macht sie Sache nur noch komplizierter, weil du am Datentyp nichtmehr erkennen kannst, wie er sich verhält. Mein Grund mich für INTs zu entscheiden war jedoch, dass ich mit date_default_timezone_set eine konfigurierte Zeitzone einstelle, die dazu führt, dass phps Datumsfunktionen auch automatisch die Zeitzone umrechnen (wichtig, wenn ich zum Beispiel date() aufrufe). Ausserdem habe ich eine konfigurierbare Zeitsyntax in der Syntax wie data() sie fordert. Da ich nicht alle meine Daten zwangsweise aus einer DB hole, muss ich mich zwangsweise damit beschäftigen, wie ich mit Daten in php umgehe. Aber gleichzeit dann noch gewisse Operationen von der DB machen zu lassen kann ich mir auch sparen, wenn ich meine timestamps einfach als INT speichere. Sonst müsste ich auch für DATE_FORMAT noch die Syntax speichern etc. etc... Und wenn ich mal zum debuggen an die DB gehe und nur mit dem mysqlquerybrowser da stehe, dann kann ich immernoch SELECT FROM_UNIXTIME(ts) FROM ... verwenden um den timestamp menschenlesbar zu analysieren. > > Liebe Grüße aus Wien, > Hannes Halenka Yannik
php::bar PHP Wiki - Listenarchive