Moin!
Ich dachte mir am einfachsten ist immer noch der UNIX Timestamp.
Da kann ich ganz einfach vergleichen zwischen zwei UNIX Timestamps,
die entsprechenden Sekunden abziehen oder dazuzählen,
und das Ausgabeformat bestimmt man auch ganz einfach.
Ich bin und bleibe einfach ein Unix Timestamp Fan,
auch wenn die MySQL Geeks mich dafür schimpfen *g*
Das Problem der Unix-Timestamp:
Es ist derzeit auf den allermeisten Plattformen nur eine vorzeichenbehaftete 32-Bit Integerzahl, das bedeutet, dass ihr Wertebereich im Jahre 2038 endet. Und unter Windows gibt es (jedenfalls behauptet PHP das in der Dokumentation) Fehler in internen Bibliotheken mit der Umwandlung von Timestamps vor "0" (also dem 1.1.1970). Das bedeutet: Du hast mit der Unix Timestamp den recht eingeschränkten Wertebereich von 1970 bis 2038, also grob 68 Jahre, zur Verfügung, mehr nicht. Außerdem vergeudest du einen erheblichen Anteil der Bits für Sekundengenauigkeit, die man doch in manchen Fällen gar nicht wirklich benötigt, beispielsweise wenn es um Geburtstage geht.
Dass die Unix-Timestamp dich komplett in die Irre führt, wenn du standardmäßig mit 24-Stunden-Tagen rechnest und dabei Sommerzeitumstellungen nicht bedenkst (schließlich hat ein Tag des Jahres immer 25 Stunden, ein anderer hingegen nur 23 Stunden - von der Möglichkeit von Schaltsekunden mal ganz zu schweigen...), hat wahsaga ja schon dargelegt.
Selbstverständlich ist das Rechnen mit Timestamps ganz nett. Aber in diesen ganz netten Umgang dann zeitzonenkorrektes Handling von Sommerzeit oder abstrusen Kalenderabnormitäten (es wurde bekanntlich mal ein Zeitraum von über zwei Wochen im Kalender übersprungen, um die nicht mitgemachten Schaltjahre zu kompensieren) einzubauen dürfte die ganze Sache dann doch wesentlich komplizierter machen.
Dann vertraue ich doch lieber auf die in MySQL implementierten Funktionen. Die anzuwenden ist mindestens genauso einfach, zumal es sich bei SQL um eine Abfragesprache handelt, die sich durchaus an menschlichen Sprachen orientiert, und der Mensch rechnet nun mal lieber mit "30 Tagen", als mit 2592000 ± 3600 Sekunden.
- Sven Rautenberg