Мы все использовали метки времени в laravel, чаще при использовании created_at и updated_at.

Недавно я работал над проектом и наткнулся на эту миграцию:

Здесь у нас есть timestamp(), datetime() и timestamps(), что является более коротким способом написания:

$table->timestamp('created_at')->nullable();

$table->timestamp('updated_at')->nullable();

И я задался вопросом: в чем разница между timestamp и datetime и когда какой использовать🤔?

Если вы вернетесь к MySQL, вы увидите, что datetime() использует DATETIME в качестве типа столбца БД. timestamp() использует TIMESTAMP в качестве типа столбца БД.

Сходства

  1. Оба хранят данные в формате YYYY-MM-DD HH:MM: SS.
  2. Оба включают дату, а также часть времени.
  3. Автоматическая инициализация может произойти для обоих.
  4. Оба изменяют данные при обновлении записи с текущей датой и временем в соответствии с ограничением.
  5. Оба могут иметь дробные доли секунды с точностью до 6-разрядной микросекунды.

Отличия

  1. Поддерживаемый диапазон для DATETIME — от 1000–01–01 00:00:00 до 9999–12–31 23:59:59, а для TIMESTAMP — от 1970–01–01 00:00:01 UTC до 2038–01–09 03:14:07 UTC.
  2. В MySQL5+ значение TIMESTAMP преобразуется из текущего времени в UTC и наоборот, в то время как DATETIME не выполняет никакого преобразования.
  3. TIMESTAMP отличается от текущих настроек часового пояса, в то время как DATETIME остается постоянным.
  4. Данные TIMESTAMP могут быть проиндексированы, а данные DATETIME — нет.
  5. Запросы с DATETIME не будут кэшироваться, но запросы с TIMESTAMP будут кэшироваться.

В Laravel тип данных timestamp часто используется для полей, представляющих момент времени, например время создания или обновления записи.

Тип данных datetime используется для полей, представляющих определенную дату и время, например запланированное событие.

В общем, timestamp полезен, когда вам нужно записать точное время создания или обновления записи, а datetime полезен, когда вам нужно записать определенную дату и время в определенном формате.

Также стоит отметить, что Laravel предоставляет удобный способ преобразования между форматами метки времени и даты и времени с помощью класса Carbon.

Не стесняйтесь Подписаться, чтобы получить больше подобного контента 🔔, аплодировать 👏🏻 , комментировать💬 и поделиться статьей с кем хочешь

И, как всегда, я ценю вашу поддержку и спасибо за чтение.