Sobes.tech
Junior

Beschreiben Sie den Unterschied zwischen den Datentypen DATETIME und TIMESTAMP.

sobes.tech KI

Antwort von AI

Die wichtigsten Unterschiede zwischen DATETIME und TIMESTAMP in den meisten SQL-Datenbanken (z.B. MySQL) sind:

  • Speicherung:

    • DATETIME speichert Jahr, Monat, Tag, Stunde, Minute, Sekunde.
    • TIMESTAMP speichert die Anzahl der Sekunden seit Beginn der Unix-Epoche (1. Januar 1970 UTC).
  • Wertebereich:

    • DATETIME hat in der Regel einen größeren Datumsbereich (z.B. von '1000-01-01 00:00:00' bis '9999-12-31 23:59:59').
    • TIMESTAMP hat einen begrenzten Bereich, abhängig von der 32-Bit- oder 64-Bit-Darstellung, meist bis 2038 für 32 Bit.
  • Zeitzone:

    • DATETIME ist unabhängig von der Zeitzone und speichert den genauen eingegebenen Wert.
    • TIMESTAMP wird bei Speicherung von der aktuellen Zeitzone in UTC umgewandelt und beim Abruf wieder zurück, daher hängt der Wert von der Zeitzone des Clients ab.
  • Größe:

    • Der Speicherplatz kann leicht variieren, aber TIMESTAMP ist oft kleiner (4 Bytes) im Vergleich zu DATETIME (8 Bytes).
  • Automatische Aktualisierung:

    • TIMESTAMP kann so konfiguriert werden, dass es bei Zeilenänderung automatisch aktualisiert wird (wenn standardmäßig verwendet oder mit ON UPDATE CURRENT_TIMESTAMP), was praktisch für Felder ist, die die letzte Änderung verfolgen. DATETIME hat diese eingebaute Funktion nicht (obwohl es mit Triggern erreicht werden kann).

Vergleichstabelle:

Merkmal DATETIME TIMESTAMP
Speicherformat Jahr, Monat, Tag, Stunde, Minute, Sekunde Sekunden seit der Unix-Epoche (UTC)
Zeitzone Unabhängig von der Zeitzone Hängt von der Zeitzone des Clients ab
Wertebereich In der Regel größer, bis zum Jahr 9999 Begrenzt, meist bis 2038 (für 32-Bit)
Automatische Aktualisierung Nein (eingebaut) Ja (optional, ON UPDATE CURRENT_TIMESTAMP)
Typische Größe 8 Byte 4 Byte

Beispiel-SQL zum Erstellen von Tabellen:

-- Beispiel Tabelle mit DATETIME
CREATE TABLE events_datetime (
    id INT PRIMARY KEY,
    event_name VARCHAR(255),
    event_time DATETIME
);

-- Beispiel Tabelle mit TIMESTAMP
CREATE TABLE events_timestamp (
    id INT PRIMARY KEY,
    event_name VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Automatisches Setzen der Erstellzeit
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- Automatisches Update bei Änderung
);