Junior
Descrie diferența dintre tipurile de date DATETIME și TIMESTAMP.
sobes.tech AI
Răspuns de la AI
Principalele diferențe dintre DATETIME și TIMESTAMP în majoritatea bazelor de date SQL (de exemplu, MySQL) sunt următoarele:
-
Stocare:
DATETIMEstochează anul, luna, ziua, ora, minutul, secundele.TIMESTAMPstochează numărul de secunde de la începutul epocii Unix (1 ianuarie 1970 UTC).
-
Intervalul de valori:
DATETIMEare de obicei un interval mai larg de date (de exemplu, de la '1000-01-01 00:00:00' până la '9999-12-31 23:59:59').TIMESTAMPare un interval limitat, în funcție de reprezentarea pe 32 sau 64 de biți, de obicei până în 2038 pentru 32 de biți.
-
Fusul orar:
DATETIMEnu depinde de fusul orar și păstrează valoarea exact introdusă.TIMESTAMPeste convertit din fusul orar curent în UTC la salvare și înapoi la extragere, deci valoarea depinde de fusul orar al clientului.
-
Dimensiune:
- Dimensiunea de stocare poate varia ușor, dar adesea
TIMESTAMPeste mai mic (4 bytes) comparativ cuDATETIME(8 bytes).
- Dimensiunea de stocare poate varia ușor, dar adesea
-
Actualizare automată:
TIMESTAMPpoate fi configurat pentru a se actualiza automat la modificarea rândului (dacă este utilizat implicit sau specificat cuON UPDATE CURRENT_TIMESTAMP), ceea ce este util pentru câmpurile care urmăresc ultima modificare.DATETIMEnu are această funcție încorporată (deși se poate realiza cu trigger-uri).
Tabel comparativ:
| Caracteristică | DATETIME | TIMESTAMP |
|---|---|---|
| Format de stocare | An, lună, zi, oră, minut, secundă | Secunde de la începutul epocii Unix (UTC) |
| Fus orar | Nu depinde de fusul orar | Depinde de fusul orar al clientului |
| Interval de valori | De obicei mai larg, până în 9999 | Limitat, de obicei până în 2038 (pentru 32-bit) |
| Actualizare automată | Nu (încorporat) | Da (opțional, ON UPDATE CURRENT_TIMESTAMP) |
| Dimensiune tipică | 8 bytes | 4 bytes |
Exemplu SQL pentru crearea tabelelor:
-- Exemplu tabel cu DATETIME
CREATE TABLE events_datetime (
id INT PRIMARY KEY,
event_name VARCHAR(255),
event_time DATETIME
);
-- Exemplu tabel cu TIMESTAMP
CREATE TABLE events_timestamp (
id INT PRIMARY KEY,
event_name VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Stabilirea automată a timpului de creare
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- Actualizare automată la modificare
);