2017-03-17 3 views
0

Ich bin neu in MySQL-Datenbank.Datetime vs Timestamp Feld

Würden Sie ein Datums- oder Zeitstempelfeld bei der Tabellenerstellung empfehlen und warum. Ich benutze MySQL 5.7 und innodb engine.

Dank

+1

datetime Feld enthält nur Datum Jahr Monat, während Zeitstempel fileld enthält Stunde Minute Sekunde auch ... Also hängt es von Ihrer Anforderung und wie Sie Daten speichern .... aber ich würde empfehlen, Zeitstempel fileld, die leicht zu filtern sein wird und bestellen Sie die Daten –

+2

@AnkitAgrawal: dateTIME enthält nicht nur "Datum Jahr Monat". Es enthält auch Zeit. Daher der Name ... – Nanne

+0

Sie können auch http://stackoverflow.com/questions/409286/should-i-use-field-datetime-or-timestamp sehen –

Antwort

1

Für eine Schöpfung Feld würde ich einen Zeitstempel verwenden. Sie werden auf diese Weise keine Probleme mit Zeitzonenkram bekommen, was ziemlich knifflig sein kann.

Timestamp ist nicht nützlich, zum Beispiel für Geburtstage, da Sie mit dem EPOCH alias Zeitstempel '0', der am 1. Januar 1970 ist, umgehen müssen. Aber für die Erstellungszeit sollte es keine Rolle spielen.

0

Zeitstempel in MySQL werden im Allgemeinen zum Verfolgen von Änderungen an Datensätzen verwendet und werden häufig bei jeder Änderung des Datensatzes aktualisiert. Wenn Sie einen bestimmten Wert speichern möchten, sollten Sie ein Datetime-Feld verwenden.

Wenn Sie möchten, dass Sie sich für die Verwendung eines UNIX-Zeitstempels oder eines nativen MySQL-Datetime-Felds entscheiden, verwenden Sie das native Format. Sie können Berechnungen innerhalb von MySQL auf diese Weise ("SELECT DATE_ADD(my_datetime, INTERVAL 1 DAY)") tun, und es ist einfach, das Format des Wertes in einen UNIX-Zeitstempel ("SELECT UNIX_TIMESTAMP(my_datetime)") zu ändern, wenn Sie den Datensatz abfragen, wenn Sie mit PHP darauf operieren wollen.

So ist es sehr ratsam, Datumzeit für die meisten Datenbankoperationen

0

ich TIMESTAMP für alles verwenden würde zu verwenden, die automatisch verwaltet werden muss, da es Sachen wie ON UPDATE CURRENT_TIMESTAMP oder mit CURRENT_TIMESTAMP als Standardwert unterstützt.

Dies ist nicht möglich mit DATETIME, aber ich mag das Format besser, da Sie es nicht konvertieren müssen. Also würde ich das für alles andere benutzen.

Wenn Sie ein flexibles Format benötigen, das automatisch generiert werden kann, müssen Sie wahrscheinlich mit TIMESTAMP gehen und bei Bedarf konvertieren.