Als welchen datentyp speichert man die unix timestamp?

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)

Woher ich das weiß:eigene Erfahrung – Eigene Projekte seit 2006, zeitweise auch andere Projekte

Mensch4 
Beitragsersteller
 05.07.2022, 19:06

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) ?

0
TW1920  05.07.2022, 19:12
@Mensch4

Einfach bigint - da gibt es keine Längenangabe ;)

Diese braucht man nur bei bestimmten Typen wie varchar...

0
TW1920  05.07.2022, 19:26
@Mensch4

varchar ist für Zeichenketten und für Zahlen schlichtweg falsch. Damit kann man am Ende dann nicht mal nach "größer" oder "kleiner" suchen, sondern nur nach "ist gleich" oder "ist nicht gleich"

0
Palladin007  05.07.2022, 22:35
@Mensch4

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.

1
TW1920  05.07.2022, 22:42
@Palladin007
das mit VARCHAR nachzubasteln, das willst Du nicht machen müssen :D

Von der Performance mal ganz abgesehen, jap - das wäre ätzend...

0
Palladin007  05.07.2022, 22:51
@TW1920

.

... 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

1

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.


Mensch4 
Beitragsersteller
 05.07.2022, 19:06

was heißt das jetzt konkret? was gibt man als sql an?

0