Ich benutze ein 64-Bit-Ubuntu-System.
Ich arbeite derzeit an einem Projekt, das MariaDB enthält. Ich plane, die Zeitstempeltechnik in das Projekt einzuführen, damit die Leute die richtige Zeit für verschiedene Zeitzonen erhalten.
Ich habe einige Artikel über das Problem des Jahres 2038 für den Zeitstempel gehört und gelesen. Viele Artikel schlagen vor, dass wir ein 64-Bit-System verwenden, um ein bisschen mehr Zeit zu gewinnen.
Auf wie viel Zeit bezieht sich dieses „Bit“? Reicht es aus, um Webanwendungen bis zum Ende zu verwalten? Wenn das nicht der Fall ist, ist es wie eine Verlängerung um nur zwei Jahre. Werden wir also im Jahr 2040 Anwendungen haben, die nicht richtig funktionieren?
time_t
Ganzzahlen verwenden, geben Ihnen ein bisschen mehr Zeit - bis zum Sonntag, den 4. Dezember, 15:30:08 Uhr, 292.277.026.596 Uhr. Hoffe, es ist lang genug für Ihre Bewerbung;)Antworten:
Nun, wenn es eine Option gibt, buchstäblich ein "Bit" zu kaufen, dh die Übertragung von einer vorzeichenbehafteten 32-Bit-Ganzzahl zu einer vorzeichenlosen 32-Bit-Ganzzahl, funktionieren die Dinge in 2106 weiter.
Die Übertragung auf 64bit ist "etwas besser". Sie erhalten eine Auflösung von Hunderten Milliarden Jahren.
Und Ubuntu macht das:
Dies ist jedoch die Betriebssystemebene. Nur weil Ubuntu eine 64-Bit-Ganzzahl für seine Zeiten verwendet, bedeutet dies nicht, dass MySQL / MariaDB sie zum Speichern seiner Zeitstempel verwendet. Wenn Datumsangaben nach 2038 für Sie jetzt wichtig sind, beginnen Sie sofort mit dem Testen.
Eigentlich kann ich dir etwas Zeit sparen. Es ist immer noch kaputt. Dieser Fehler wurde vor über einem Jahrzehnt gemeldet, aber sein Haupttest schlägt immer noch mit einem 64-Bit-Int fehl.
Dies ist nicht einmal Lagerung. Es ist leicht erbärmlich.
(Und ja, das lief auf MariaDB, Version 10.1)
quelle
Speichern Sie es überhaupt nicht als Ganzzahl. Speichern Sie es als ISO 8601- formatierte Datumszeichenfolge. Dies ist das im Internet verwendete Standardformat.
quelle