Sobes.tech
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 -- Аутоматско ажурирање при промени
);