Junior
Aprakstiet atšķirību starp DATETIME un TIMESTAMP datu tipus.
sobes.tech AI
Atbilde no AI
Lielākajā daļā SQL datu bāzu galvenās atšķirības starp DATETIME un TIMESTAMP ir šādas:
-
Glabāšana:
DATETIMEglabā gadu, mēnesi, dienu, stundu, minūti, sekundi.TIMESTAMPglabā sekundes skaitu kopš Unix epohas sākuma (1. janvāris 1970. UTC).
-
Vērtību diapazons:
DATETIMEparasti ir plašāks diapazons (piemēram, no '1000-01-01 00:00:00' līdz '9999-12-31 23:59:59').TIMESTAMPir ierobežots diapazons, atkarīgs no 32 vai 64 bitu attēlojuma, parasti līdz 2038. gadam 32 bitu sistēmām.
-
Laika josla:
DATETIMEnav atkarīgs no laika joslas un glabā precīzu ievadīto vērtību.TIMESTAMPtiek pārveidots no pašreizējās laika joslas uz UTC glabāšanai un atpakaļ, tāpēc vērtība ir atkarīga no klienta laika joslas.
-
Izmērs:
- Glabāšanas izmērs var nedaudz atšķirties, bet bieži
TIMESTAMPir mazāks (4 baiti) salīdzinājumā arDATETIME(8 baiti).
- Glabāšanas izmērs var nedaudz atšķirties, bet bieži
-
Automātiska atjaunināšana:
TIMESTAMPvar tikt iestatīts uz automātisku atjaunināšanu, mainoties rindai (ja tas ir noklusējums vai arON UPDATE CURRENT_TIMESTAMP), kas ir ērti pēdējā izmaiņas laika uzraudzībai.DATETIMEtam nav iebūvētas iespējas (lai gan to var panākt ar trigeriem).
Salīdzināšanas tabula:
| Īpašība | DATETIME | TIMESTAMP |
|---|---|---|
| Glabāšanas formāts | Gads, mēnesis, diena, stunda, minūte, sekunde | Sekundes no Unix epohas sākuma (UTC) |
| Laika josla | Neatkarīga no laika joslas | Atkarīga no klienta laika joslas |
| Diapazons | Parasti plašāks, līdz 9999. gadam | Ierobežots, parasti līdz 2038. gadam (32 bitu) |
| Automātiska atjaunināšana | Nav (iebūvēts) | Ir (pēc izvēles, ON UPDATE CURRENT_TIMESTAMP) |
| Tipa izmērs | 8 baiti | 4 baiti |
Piemērs SQL, lai izveidotu tabulas:
-- Piemērs ar `DATETIME`
CREATE TABLE events_datetime (
id INT PRIMARY KEY,
event_name VARCHAR(255),
event_time DATETIME
);
-- Piemērs ar `TIMESTAMP`
CREATE TABLE events_timestamp (
id INT PRIMARY KEY,
event_name VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Automātiska izveides laika iestatīšana
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- Automātiska atjaunināšana
);