Als welchen datentyp speichert man die unix timestamp?
ich hätte jetzt mal INT(10) verwendet
3 Antworten
Ja, den Unix Timestamp kann man als Integer speichern, doch bedenke das Jahr 2038 ;)
Das geht nur bis zum 19. Januar 2038 3:14:07 Uhr - man kann auch bigint nehmen, wobei das nur bei 64-Bit Systemen geht. (was allerdings heute Standard sein sollte)
Wenn es dir um SQL geht, dann guck nach geeigneten Datentypen von der Datenbank - ggf. gibt's geeignete DateTime-Datentypen.
Oder, wenn Du Platz sparen, aber Zeiträume bis weit in Zukunft unterstützen musst, dann bau es dir selber, indem Du einen INT-Typ, Start-Zeitpunkt und die Einheit definierst - z.B. vom Jahr 2000 an in Stunden gezählt.
Und BIGINT vs. VARCHAR: ich stimme TW1920 zu. Ein Datum sollte sortierbar sein, das mit VARCHAR nachzubasteln, das willst Du nicht machen müssen :D
Daher: Definitiv ein INT-Datentyp, Hauptsache sortierbar.
das mit VARCHAR nachzubasteln, das willst Du nicht machen müssen :D
Von der Performance mal ganz abgesehen, jap - das wäre ätzend...
.
... und Speicherplatz ...
... und ein String erlaubt mehrere Formate ...
... und kein ORM kann ohne Krücken damit umgehen ...
Ja, ich denke wir sind uns einig, dass das Murks wäre :D
Na, als TIMESTAMP üblicherweise.
Oder eben datetime, wenn es nicht anders geht.
Viele Systeme verwenden Signed Integer 32bit aber da wird man im Jahr 2038 ein Problem mit Überlauf bekommen also sollte man eher 64Bit verwenden.
ich mach mir mal noch keine gedanken um 12 jahre in der zukunft ;)
was heißt das jetzt konkret? was gibt man als sql an? bigint(10) ?