unix timestamp oder yymmddhhmmss?
was sollte man eher verwenden und warum
1656992044 220705053544
und wie sollte ich die zahl in der mysql datenbank abspeichern? bisher habe ich es als ganz normaler int gespeichert
Das Ergebnis basiert auf 13 Abstimmungen
10 Antworten
deine Frage verstehe ich nicht.
Wo willst du Zeitangaben verwenden?
Du nennst timestamp, was auf Datumsangaben wie CreationTime, Modification-Time .. hindeutet.
Unix verwendet dafür 32 Bit und die werden dann als Dezimalzahl ( 1656992044 ) dargestellt.
Genauere Angaben lassen sich dann in einem Unix-/Linux-Filesystem nicht machen.
Außerhalb eines Filesystems können Zeiten aber auch als Millisekunden und Mikrosekunden gespeichert werden.
Das sind dann Zeiten ab dem 01.01.1970 00:00 Uhr
Dummerweise kann man mit anderen Darstellungen, die zwar für den Menschen lesbar sind, kaum rechnen.
Ich habe mit beim Programmieren angewöhnt, alles in die 32-Bit-Form zu wandeln und dann bei zu lesenden Anzeigen zurück in [yy]yymmddhhmmss.
Datenformate sind nicht dafür da, gut von Menschen gelesen werden zu können.
Viel wichtiger ist, das man sie gut verarbeiten kann.
Sowas wie
Datum - Datum
oder
Datum + Zeit
geht in diesem Format wesentlich besser.
wer milisekunden brauch , brauch millisekunden , wer sie nicht brauch bleibt bei sekunden .
wer datum braucht braucht datum
ist da was unklar ?
Das kommt darauf an, wo du das verwendest. Wenn du mit dem Datum rechnen willst (in PHP/JS), dann den Unix-Timestamp. Um es dem Benutzer anzuzeigen, zur Not yymmdd.. oder eben richtig dekodiert.
In einer Datenbank keines von beiden, sondern deren nativen DATETIME Typ. Nur damit kannst du direkt in der DB mit dem Datum arbeiten und so was wie YEAR, MONTH, DATEADD, etc. verwenden. Beim schreiben in die DB kannst du ggf. FROM_UNIXTIME oder beim Lesen UNIX_TIMESTAMP oder DATE_FORMAT verwenden, wenn du das in PHP so weiterverarbeiten willst.
Rechnen ist tricky, wenn du noch Daten hast, die vor dem 1.1.1970 liegen (Geburtsdatum, etc.) ist der Unix-Timestamp da ziemlich Mist.
DATETIME Spalten in der DB kannst du direkt vergleichen, oder auch mal sowas mit WHERE datumsspalte>DATESUB(NOW(), INTERVAL 1 MONTH) direkt im SQL bauen. Die mySQL Datumsfunktionen findest du in der Doku.
Unix-Timestamp nach Datum geht in PHP mit date, in JS mit dem Date-Objekt, wobei du da evtl. irgendwo mit 1000 multiplizieren musst, weil die Millisekunden statt Sekunden wie PHP/Unix nehmen.
yymmddhhmmss ist ja nicht eindeutig, könnte ja auch das Jahr 2122 sein.
Würde ich daher in keinem Fall verwenden.
naja ich glaube ich würde das programm schon irgendwann in den nächsten 75 Jahren updaten ;)
Und warum benutzt du nicht einfach datetime von MySQL https://dev.mysql.com/doc/refman/5.6/en/date-and-time-literals.html
ich brauche es zum einen um damit zu rechnen und zum anderen um es später wieder als datum anzuzeigen, bisher habe ich es immer so gemacht, dass zum beispiel eine einfache if abfrage reicht um zu sagen welche tahl größer ist und somit welches datum weiter vorne liegt, bei unix weiß ich nicht genau wie man das wieder zurückrechnet