Würden Sie die Verwendung eines datetime oder eine Zeitstempel Feld und warum (unter Verwendung von MySQL)?
Ich arbeite mit PHP auf der Serverseite.
Würden Sie die Verwendung eines datetime oder eine Zeitstempel Feld und warum (unter Verwendung von MySQL)?
Ich arbeite mit PHP auf der Serverseite.
DATETIME vs. TIMESTAMP:
TIMESTAMP wird verwendet, um Änderungen von Datensätzen zu verfolgen und jedes Mal zu aktualisieren, wenn der Datensatz geändert wird.
DATETIME wird verwendet, um einen spezifischen und statischen Wert zu speichern, der nicht durch Änderungen in den Datensätzen beeinflusst wird.
TIMESTAMP wird auch von verschiedenen ZEITZONEN-Einstellungen beeinflusst. DATETIME ist konstant.
TIMESTAMP konvertiert intern eine aktuelle Zeitzone für die Speicherung in UTC und konvertiert sie beim Abruf wieder in die aktuelle Zeitzone.
DATETIME kann dies nicht tun.
TIMESTAMP ist 4 Byte und DATETIME ist 8 Byte lang.
TIMESTAMP unterstützter Bereich: '1970-01-01 00:00:01 UTC bis '2038-01-19 03:14:07 UTC DATETIME unterstützter Bereich: '1000-01-01 00:00:00 bis '9999-12-31 23:59:59
Ich benutze keine datetime
in meinen Anwendungen, nachdem ich mit vielen Problemen und Fehlern im Zusammenhang mit Zeitzonen konfrontiert war. IMHO ist die Verwendung timestamp
ist besser als datetime
in den meisten Fällen .
Wenn Sie fragen, wie spät es ist, und die Antwort lautet: "2019-02-05 21:18:30", ist das eine unvollständige, nicht definierte Antwort, denn es fehlt ein weiterer Teil, nämlich in welcher Zeitzone? Washington ? Moskau ? Peking ?
Die Verwendung von Datumsangaben ohne Zeitzone bedeutet, dass Ihre Anwendung nur mit einer Zeitzone zu tun hat, aber Zeitstempel bieten Ihnen folgende Vorteile datetime
sowie die Flexibilität, denselben Zeitpunkt in verschiedenen Zeitzonen anzuzeigen.
Hier sind einige Fälle, in denen Sie die Verwendung bereuen werden datetime
und wünschen, dass Sie Ihre Daten in Zeitstempeln speichern.
Für den Komfort Ihrer Kunden möchten Sie ihnen die Zeiten auf der Grundlage ihrer bevorzugten Zeitzonen anzeigen, ohne dass sie rechnen und die Zeit in die von ihnen gewünschte Zeitzone umrechnen müssen. (Eigentlich sollten Sie die Zeitzone immer zu Beginn der Anwendung festlegen, oder im Falle von PHP-Anwendungen bei der Bearbeitung der Anfrage)
SET time_zone = '+2:00';
Sie haben das Land gewechselt, in dem Sie sich aufhalten, und setzen Ihre Arbeit zur Pflege der Daten fort, während Sie sie in einer anderen Zeitzone sehen (ohne die eigentlichen Daten zu ändern).
Sie Daten von verschiedenen Kunden aus der ganzen Welt annehmen, fügt jeder von ihnen die Zeit in seiner Zeitzone ein.
datetime
= Die Anwendung unterstützt 1 Zeitzone (sowohl beim Einfügen als auch beim Auswählen)
timestamp
= Die Anwendung unterstützt jede Zeitzone (sowohl beim Einfügen als auch beim Auswählen)
Diese Antwort soll nur die Flexibilität und Einfachheit von Zeitstempeln in Bezug auf Zeitzonen hervorheben, sie deckt keine anderen Unterschiede wie die Spaltengröße oder Bereich oder Fraktion .
Was ist, wenn es Felder gibt, in denen date
und andere Feldanwendungen timestamp
in einer Tabelle. Ich denke, es wird ein neues Problem verursachen, weil die Daten, die nach where
nicht mit den Zeitzonenänderungen übereinstimmt.
Der wichtigste Unterschied ist
Sehen Sie sich das an Beitrag zu Problemen mit Datetime-Indizierung
Das ist offensichtlich falsch. Hier ist ein Beispiel: CREATE TABLE t2 ( ts1 TIMESTAMP NULL, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Die erste Spalte kann den Wert NULL annehmen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
2 Stimmen
Hier finden Sie einige wichtige Informationen codeproject.com/Tipps/1215635/MySQL-DATETIME-vs-TIMESTAMP
11 Stimmen
Wenn Sie möchten, dass Ihre Anwendung im Februar 2038 unterbrochen wird, verwenden Sie timestamp. Prüfen Sie den Datumsbereich.
0 Stimmen
Wenn auch nur die geringste Möglichkeit besteht, dass Ihre Datenbank Werte in einer anderen Zeitzone speichern oder Verbindungen von einer Anwendung in einer anderen Zeitzone empfangen muss, sollten Sie ISO-8601 CHARs für alle wichtigen Zeitstempel verwenden. Siehe diese Frage: stackoverflow.com/questions/40670532/
0 Stimmen
Datetime ist völlig nutzlos . es ist nur ein dummer String. timestamp ist in jeder Hinsicht perfekt sondern sie endet im Jahr 2038.