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:
DATETIMEslaat jaar, maand, dag, uur, minuut, seconde op.TIMESTAMPslaat het aantal seconden sinds het begin van de Unix-epoche op (1 januari 1970 UTC).
-
Waardenbereik:
DATETIMEheeft meestal een breder datumbereik (bijvoorbeeld van '1000-01-01 00:00:00' tot '9999-12-31 23:59:59').TIMESTAMPheeft een beperkt bereik, afhankelijk van de 32-bit of 64-bit representatie, meestal tot 2038 voor 32-bit.
-
Tijdzone:
DATETIMEis onafhankelijk van de tijdzone en slaat de exacte ingevoerde waarde op.TIMESTAMPwordt 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
TIMESTAMPkleiner (4 bytes) in vergelijking metDATETIME(8 bytes).
- De opslaggrootte kan licht variëren, maar vaak is
-
Automatisch bijwerken:
TIMESTAMPkan worden ingesteld om automatisch te worden bijgewerkt bij het wijzigen van de rij (indien standaard gebruikt of gespecificeerd metON UPDATE CURRENT_TIMESTAMP), wat handig is voor velden die de laatste wijziging bijhouden.DATETIMEheeft 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
);