Junior
Опишите разлику између типова података DATETIME и TIMESTAMP.
sobes.tech АИ
Одговор од АИ
Основне разлике између DATETIME и TIMESTAMP у већини SQL база података (на пример, MySQL) су следеће:
-
Складиштење:
DATETIMEчува годину, месец, дан, сат, минут, секунду.TIMESTAMPчува број секунди од почетка Unix епохе (1. јануар 1970. UTC).
-
Диапазон вредности:
DATETIMEобично има шири опсег датумских вредности (на пример, од '1000-01-01 00:00:00' до '9999-12-31 23:59:59').TIMESTAMPима ограниченији опсег, зависно од 32-битног или 64-битног приказа, обично до 2038. године за 32-бит.
-
Времена зона:
DATETIMEније зависан од временске зоне и чува тачну унету вредност.TIMESTAMPсе при чувању конвертује из тренутне временске зоне у UTC и обратно при читању, тако да вредност зависи од временске зоне клијента.
-
Величина:
- Величина складиштења може благо да варира, али често је
TIMESTAMPмањи (4 бајта) у поређењу саDATETIME(8 бајтова).
- Величина складиштења може благо да варира, али често је
-
Аутоматско ажурирање:
TIMESTAMPможе бити подешен на аутоматско ажурирање при промени реда (ако се користи као подразумевано или саON UPDATE CURRENT_TIMESTAMP), што је згодно за поља која прате време последње промене записа.DATETIMEнема такву уграђену могућност (иако се може постићи са триггерима).
Табела поређења:
| Карактеристика | DATETIME | TIMESTAMP |
|---|---|---|
| Формат складиштења | Година, месец, дан, сат, минут, секунда | Секунде од почетка Unix епохе (UTC) |
| Временска зона | Независно од временске зоне | Зависно од временске зоне клијента |
| Диапазон вредности | Обично шири, до 9999. године | Ограничен, обично до 2038. године (за 32-бит) |
| Аутоматско ажурирање | Не (уграђено) | Има (опционо, ON UPDATE CURRENT_TIMESTAMP) |
| Типична величина | 8 бајтова | 4 бајта |
Пример SQL за креирање табела:
-- Пример табеле са DATETIME
CREATE TABLE events_datetime (
id INT PRIMARY KEY,
event_name VARCHAR(255),
event_time DATETIME
);
-- Пример табеле са TIMESTAMP
CREATE TABLE events_timestamp (
id INT PRIMARY KEY,
event_name VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Аутоматско постављање времена креирања
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- Аутоматско ажурирање при промени
);