Sollte ich ein big INT oder regelmäßige INT in MySQL zu speichern, timestamp?
Soll ich mich mit einer großen ganzen Zahl oder eine reguläre integer in MySQL zu speichern timerstamp? Ich der plan auf, speichern es in eine INT-und nicht die integrierte timestamp-oder datetime-also die INT-Typ sollte ich verwenden?
Ich wünschte, es gäbe ein gültiges tutorial im Netz für RICHTIG tun, Zeitzonen für Benutzer in MySQL und PHP, scheint alle die info ist veraltet jetzt, dass der mysql geändert hat das format von timestamp-Felder werden genau die gleichen als datetime
InformationsquelleAutor JasonDavis | 2010-01-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Int roll über, um eine negative im Jahr 2038 (wenn Sie UNIX-timestamp): http://en.wikipedia.org/wiki/2038_problem.
so BIGINT ist wahrscheinlich die sicherste Wahl
zucken....wenn Sie es schaffen würde ein unsigned int, könnte man sich gut in 2100 und einige (vorausgesetzt, Sie haben eine Funktion, die hält was aus die zahlen, und Sie umzuwandeln)
Gut. Es gibt intelligente Menschen, dass die Verwendung vom Datentyp bigint für die Arbeit mit datases (Datenbanken sind Datenbanken keine Datenbank + Programme für marketing), weil, Portabilität und Probleme mit datetime-Formate mit Datenbanken, oder-Versionen der Datenbanken. Int sind, Int. und kein problem mit Oracle, SQL, MySQL, MariaDb, und andere. Datatimes Arten, zu viele Probleme auf die google-Suche mit verschiedenen Datenbanken-updates, conpatibilties.. Mucha veces no es cuestion de inteligencia, es cuestion de experiencia 😉 oft ist es nicht eine Frage der Intelligenz, ist eine Frage der Erfahrung;-)
InformationsquelleAutor zmbush
Sollten Sie eine Aufbewahrung in einem timestamp, da die meisten wahrscheinlich, was das DBMS optimiert für die timestamp-Daten.
Ich bin neugierig, warum Sie würden die ganze harte Arbeit, die MySQL-Entwickler haben in timestamps arbeiten, wie Sie sollten, und ersetzen Sie es mit etwas, das fast sicher nicht so gut funktionieren.
Da Sie nicht Staat warum Sie möchten, verwenden Sie eine Ganzzahl, ich werde einfach davon ausgehen, es war vorübergehende GEISTESKRANKHEIT, und dass Sie sich bald erholen 🙂
In diesem Fall würde ich verwenden, UNIX_TIMESTAMP (), um die zugrunde liegenden time_t-was ist was in der DB sowieso.
In meiner situation funktioniert es einfach, neuere Versionen auf mysql speichern datetime und timestamp in dieses format nun 0000-00-00 statt 0000000 (die zahlen und Striche sein können aus, aber Sie bekommen die Idee. Timestamp verwendet werden, um eine ECHTE Zeitstempel, aber nicht mehr. All meine Zeit-Funktionen benötigen, eine echte timestamp von mysql, so dass, wenn ich Speichere einen timestamp in einer INT-es verbraucht weniger Platz und es ist weniger die Verarbeitung/Konvertierung hin und her. Wie gesagt, alle meine Funktion muss ein timestamp sowieso, also, wenn ich ihm die neueren Stil-timestamp, den ich dann brauchen, konvertieren Sie es in einem echten timestamp in php. Nach mehreren Tagen des testens
jede mögliche Lösung, die ich finden konnte, für welche diesmal in der Benutzer-Zeitzone und speichern einer Uhrzeit im UTC-Zeit, der einzige Weg, ich könnte es die Arbeit wurde mit einem INT Feld. Ich nicht sorgen über die Sortierung von mysql wird langsamer oder etwas, da alle meine Fragen beruhen auf einer ID-Nummer und nicht dat/Zeit.
Zeitstempel gespeichert werden in der DB als time_t-Typen, und Sie können an Ihnen mit UNIX_TIMESTAMP().
InformationsquelleAutor paxdiablo
Ich denke, es hängt ganz von dem, was Sie tun möchten. Es gibt ein paar richtige Typen für Zeit/Datum-Typen (siehe: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.html)
DATE
- in der Regel 3 Byte, range:1000-01-01
zu9999-12-31
.DATETIME
- 8 bytes, Wertebereich1000-01-01 00:00:00
zu9999-12-31 23:59:59
TIMESTAMP
- 4-Byte-Bereich1970-01-01 00:00:01
UTC2038-01-19 03:14:07
UTC.Dann gibt es einige semantische Probleme bewusst zu sein:
(int ist 4 bytes, wie TIMESTAMP bigint 8 bytes wie DATETIME)
InformationsquelleAutor Roland Bouman