DATETIME vs. TIMESTAMP in MySQL
-
Ähnlichkeiten von
DATETIME
undTIMESTAMP
-
Unterschiede von
DATETIME
undTIMESTAMP
-
Beispiel zum Verständnis der Verwendung von
DATETIME
undTIMESTAMP
in MySQL - Fazit
DATETIME
und TIMESTAMP
sind zwei verschiedene Datentypen, die Sie verwenden können, um einen Wert zu speichern, der den Datums- und Zeitteil enthalten muss.
In diesem Artikel erfahren wir mehr über das Format, in dem es in der Datenbank gespeichert wird, und den für jeden Datentyp erforderlichen Speicherplatz. Wir werden uns auch die Ähnlichkeiten und Unterschiede von beiden Datentypen ansehen und versuchen, sie anhand eines Beispiels zu verstehen.
Ähnlichkeiten von DATETIME
und TIMESTAMP
DATETIME
und TIMESTAMP
haben einige Ähnlichkeiten, die unten aufgeführt sind:
- Beide speichern den gleichen Datentyp und bestehen aus zwei Teilen (Datum und Uhrzeit).
- Beide haben bei der Abfrage das gleiche Format.
- Das Format für die Speicherung in der Datenbank ist gleich (
JJJJ-MM-TT hh:mm:ss
). - Beide benötigen zusätzliche Bytes für Sekundenbruchteilgenauigkeit.
- Wann immer Datensätze aktualisiert werden, können beide Daten mit dem aktuellen Datum und der aktuellen Uhrzeit ändern.
Unterschiede von DATETIME
und TIMESTAMP
DATETIME
und TIMESTAMP
haben folgende Unterschiede:
DATETIME
undTIMESTAMP
benötigen 5 Bytes bzw. 4 Bytes.TIMESTAMP
wird von der Zeitzone beeinflusst, aberDATETIME
bleibt konstant.- Unterstützte Bereiche für
DATETIME
undTIMESTAMP
sind'1000-01-01 00:00:00'
bis'9999-12-31 23:59:59'
und'1970-01-01 00:00:01'UTC
bis'2038-01-19 03:14:07' UTC
. DATETIME
kann nicht indiziert werden, währendTIMESTAMP
es sein kann.- Abfragen mit
TIMESTAMP
werden zwischengespeichert, beiDATETIME
ist dies nicht der Fall.
Beispiel zum Verständnis der Verwendung von DATETIME
und TIMESTAMP
in MySQL
Nehmen wir an, Sie betreiben ein Café in Ihrem Land. Jeder Kunde erhält nach Bezahlung der Rechnung eine Rechnung.
Diese Rechnung hat neben anderen Details ein Datum und eine Uhrzeit. Da Sie den Shop nur in Ihrem Land betreiben, in dem sich alle Ihre Kunden in derselben Zeitzone befinden, verwenden Sie DATETIME
.
Ändern wir dieses Szenario ein wenig; Sie haben jetzt zehn Cafés in verschiedenen Ländern, jedes Land hat seine Zeitzone. Die Kunden erhalten dort auch Rechnungen, aber wie können Sie das Datum und die Uhrzeit entsprechend der Zeitzone der Kunden anzeigen?
Hier verwenden Sie TIMESTAMP
. Wieso den? Da TIMESTAMP
von der Zeitzone beeinflusst wird, wird der Wert von TIMESTAMP
zur Speicherung von der aktuellen Zeitzone (Serverzeit) in UTC (Universal Time Zone) und zurück in die aktuelle Zeitzone (Serverzeit) konvertiert ) beim Abrufen.
Beispielcode:
Bitte führen Sie den folgenden Code in Ihrem MySQL aus (wir verwenden MySQL 8.0.27 für dieses Tutorial) und sehen Sie sich die Ausgabe nach dem Code an.
#create schema
CREATE SCHEMA db_practice_datetime_timestamp;
#create table
CREATE TABLE practice_datetime_and_timestamp (
ID INT AUTO_INCREMENT PRIMARY KEY,
DATE_TIME DATETIME,
TIME_STAMP TIMESTAMP
);
#insert data
INSERT INTO practice_datetime_and_timestamp(TIME_STAMP,DATE_TIME)
VALUES(NOW(),NOW());
#read data
SELECT DATE_TIME, TIME_STAMP from practice_datetime_and_timestamp;
Ausgabe:
Führen Sie nun den unten angegebenen Code aus und sehen Sie sich seine Ausgabe an.
SET time_zone = '-05:00';
SELECT DATE_TIME, TIME_STAMP from practice_datetime_and_timestamp;
Ausgabe:
Sie haben vielleicht bemerkt, dass sich die Zeit für die Spalte TIME_STAMP
geändert hat, aber die Daten für DATE_TIME
gleich bleiben.
Fazit
In dieser Diskussion sind wir zu dem Schluss gekommen, dass DATETIME
und TIMESTAMP
die gleichen Daten gemäß Ihren Anforderungen speichern. Wenn Sie möchten, dass Ihre Daten von der Zeitzone beeinflusst werden, gehen Sie zu TIMESTAMP
. Ansonsten ist es gut, DATETIME
zu verwenden.