3170 Stimmen

Sollte ich in MySQL den Datentyp datetime oder timestamp verwenden?

Würden Sie die Verwendung eines datetime oder eine Zeitstempel Feld und warum (unter Verwendung von MySQL)?

Ich arbeite mit PHP auf der Serverseite.

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/

12voto

Rahul Kr Daman Punkte 371

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

11voto

Accountant م Punkte 5859

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.

  1. 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';
  2. 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).

  3. Sie Daten von verschiedenen Kunden aus der ganzen Welt annehmen, fügt jeder von ihnen die Zeit in seiner Zeitzone ein.

Kurzum

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 .

0 Stimmen

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.

0 Stimmen

@ErlangP In diesem Fall sollte Ihre Anwendung das Zeitzonenproblem auf der date Spalte, bevor die Abfrage gesendet wird.

10voto

Charles Faiga Punkte 11572

Der wichtigste Unterschied ist

Sehen Sie sich das an Beitrag zu Problemen mit Datetime-Indizierung

6 Stimmen

Beide haben das gleiche Problem, wenn Sie mit einer Funktion basierend auf dem Spaltenwert auswählen, und beide können indiziert werden.

4 Stimmen

Index funktioniert auf Zeitstempel und nicht auf datetime? Sie haben falsche Schlüsse aus diesen Beiträgen gezogen.

9voto

ecleel Punkte 11486

Ein weiterer Unterschied zwischen Timestamp und Datetime ist, dass bei Timestamp der Wert nicht auf NULL gesetzt werden kann.

8 Stimmen

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.

9voto

Hans Punkte 1232

Ich bevorzuge die Verwendung von Zeitstempeln, um alles in einem gemeinsamen Rohformat zu halten und die Daten in PHP-Code oder in Ihrer SQL-Abfrage zu formatieren. Es gibt Fälle, in denen es in Ihrem Code nützlich ist, alles in einfachen Sekunden zu halten.

CodeJaeger.com

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.

Powered by:

X