Мы все использовали метки времени в 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 в качестве типа столбца БД.
Сходства
- Оба хранят данные в формате
YYYY-MM-DD HH:MM: SS
. - Оба включают дату, а также часть времени.
- Автоматическая инициализация может произойти для обоих.
- Оба изменяют данные при обновлении записи с текущей датой и временем в соответствии с ограничением.
- Оба могут иметь дробные доли секунды с точностью до 6-разрядной микросекунды.
Отличия
- Поддерживаемый диапазон для 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. - В MySQL5+ значение TIMESTAMP преобразуется из текущего времени в UTC и наоборот, в то время как DATETIME не выполняет никакого преобразования.
- TIMESTAMP отличается от текущих настроек часового пояса, в то время как DATETIME остается постоянным.
- Данные TIMESTAMP могут быть проиндексированы, а данные DATETIME — нет.
- Запросы с DATETIME не будут кэшироваться, но запросы с TIMESTAMP будут кэшироваться.
В Laravel тип данных timestamp
часто используется для полей, представляющих момент времени, например время создания или обновления записи.
Тип данных datetime
используется для полей, представляющих определенную дату и время, например запланированное событие.
В общем, timestamp
полезен, когда вам нужно записать точное время создания или обновления записи, а datetime
полезен, когда вам нужно записать определенную дату и время в определенном формате.
Также стоит отметить, что Laravel предоставляет удобный способ преобразования между форматами метки времени и даты и времени с помощью класса Carbon
.
Не стесняйтесь Подписаться, чтобы получить больше подобного контента 🔔, аплодировать 👏🏻 , комментировать💬 и поделиться статьей с кем хочешь
И, как всегда, я ценю вашу поддержку и спасибо за чтение.