Sobes.tech
Junior

Beschrijf het verschil tussen de datatypes DATETIME en TIMESTAMP.

sobes.tech AI

Antwoord van AI

De belangrijkste verschillen tussen DATETIME en TIMESTAMP in de meeste SQL-databases (bijvoorbeeld MySQL) zijn als volgt:

  • Opslag:

    • DATETIME slaat jaar, maand, dag, uur, minuut, seconde op.
    • TIMESTAMP slaat het aantal seconden sinds het begin van de Unix-epoche op (1 januari 1970 UTC).
  • Waardenbereik:

    • DATETIME heeft meestal een breder datumbereik (bijvoorbeeld van '1000-01-01 00:00:00' tot '9999-12-31 23:59:59').
    • TIMESTAMP heeft een beperkt bereik, afhankelijk van de 32-bit of 64-bit representatie, meestal tot 2038 voor 32-bit.
  • Tijdzone:

    • DATETIME is onafhankelijk van de tijdzone en slaat de exacte ingevoerde waarde op.
    • TIMESTAMP wordt bij opslag geconverteerd van de huidige tijdzone naar UTC en bij ophalen weer terug, dus de waarde hangt af van de tijdzone van de client.
  • Grootte:

    • De opslaggrootte kan licht variëren, maar vaak is TIMESTAMP kleiner (4 bytes) in vergelijking met DATETIME (8 bytes).
  • Automatisch bijwerken:

    • TIMESTAMP kan worden ingesteld om automatisch te worden bijgewerkt bij het wijzigen van de rij (indien standaard gebruikt of gespecificeerd met ON UPDATE CURRENT_TIMESTAMP), wat handig is voor velden die de laatste wijziging bijhouden. DATETIME heeft deze ingebouwde mogelijkheid niet (hoewel dit met triggers kan worden bereikt).

Vergelijkingstabel:

Kenmerk DATETIME TIMESTAMP
Opslagformaat Jaar, maand, dag, uur, minuut, seconde Seconden sinds de Unix-epoche (UTC)
Tijdzone Onafhankelijk van de tijdzone Afhankelijk van de tijdzone van de client
Waardenbereik Over het algemeen breder, tot 9999 jaar Beperkt, meestal tot 2038 (voor 32-bit)
Automatisch bijwerken Nee (ingebouwd) Ja (optioneel, ON UPDATE CURRENT_TIMESTAMP)
Typische grootte 8 bytes 4 bytes

Voorbeeld SQL voor het maken van tabellen:

-- Voorbeeld tabel met DATETIME
CREATE TABLE events_datetime (
    id INT PRIMARY KEY,
    event_name VARCHAR(255),
    event_time DATETIME
);

-- Voorbeeld tabel met TIMESTAMP
CREATE TABLE events_timestamp (
    id INT PRIMARY KEY,
    event_name VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Automatisch instellen van de aanmaak tijd
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- Automatisch bijwerken bij wijziging
);