MySQL — TIMESTAMP против DATETIME

Перейти к основному содержанию

время + отметка = отметка времени (или это дата + время = дата и время?)

Филипп Бургер

Филипп Бургер

Программное обеспечение, Blue Origin, Orbital Reef Logistics — решение сложных проблем с помощью технологий и сочувствия

Опубликовано 25 октября 2018 г.

+ Подписаться

Я только что изучил их, чтобы убедиться, что выбрал правильный, и основная информация, которая привела меня к пониманию, что мне нужна TIMESTAMP (которая должна была быть очевидной, но была хорошо изложена):

Я использую TIMESTAMP, когда мне нужно записать (более или менее) фиксированный момент времени.
Например, когда запись была вставлена ​​в базу данных или когда произошло какое-то действие пользователя.
Я использую поле DATETIME, когда дату/время можно установить и изменить произвольно. Например, когда пользователь может сохранить позднее изменение встреч.

Так что да, это должно быть довольно просто, но я понял, что для всего, что я использовал, я фактически регистрировал время, когда что-то происходило, поэтому TIMESTAMP был правильным.

Некоторые другие полезные информационные самородки:

TIMESTAMP составляет 4 байта против 8 байтов для DATETIME

Это звучит так, как будто вы должны ВСЕГДА использовать TIMESTAMP, потому что это займет меньше места. Но я предполагаю, что есть проблема, что если часовой пояс изменится на СЕРВЕРЕ, это может привести к изменению всех ваших значений. Итак, если люди назначают встречи, а сервер меняет часовой пояс, все время встреч тоже изменится… верно?

Это тоже:

Тип DATETIME используется, когда вам нужны значения, содержащие информацию о дате и времени. MySQL извлекает и отображает значения 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. Он имеет различные свойства в зависимости от версии MySQL и режима SQL, в котором работает сервер.

Много исследований и цитат выше из: https://stackoverflow.com/questions/409286/should-i-use-the-datetime-or-timestamp-data-type-in-mysql и http://dev.mysql .com/doc/refman/5.0/en/storage-requirements.html

Наслаждайтесь и оставляйте комментарии, если вы нашли здесь что-то еще полезное!

Другие также смотрели

Исследуйте темы

Dates — MySQL для разработчиков — PlanetScale

По мере усложнения базы данных MySQL становится все более важным понимать различные типы данных, используемые для хранения различных типов информации. В этом видео мы более подробно рассмотрим хранение данных, связанных со временем, в MySQL и рассмотрим пять различных типов данных, доступных для этой цели.

Прежде чем мы углубимся в различные типы данных, доступные для хранения временных данных, важно понять, нужно ли вам вообще хранить данные, связанные со временем. В зависимости от вашего приложения вам может потребоваться хранить даты, время, метки времени, годы или другие временные данные.

Итак, первый вопрос, который вы должны задать себе: «Нужно ли мне хранить время ?» Если вам нужно сохранить только дату, вы будете смотреть на другие типы данных, чем если бы вам нужно было сохранить дату и время.

Давайте подробнее рассмотрим пять различных типов, которые вы можете использовать для хранения данных, связанных со временем, в MySQL.

ДАТА

Если вам нужно сохранить только дату, то лучше всего подойдет столбец типа ДАТА . Это трехбайтовый тип данных, который может хранить широкий диапазон данных с 1000 по 9 год. ,999.

DATETIME

Если вам нужно сохранить и дату, и время, то DATETIME и TIMESTAMP — два варианта, которые у вас есть. DATETIME — это восьмибайтовый тип данных, который может хранить большой диапазон данных. Итак, если вам нужно хранить данные о времени до 9999 года, DATETIME — это то, что вам нужно.

TIMESTAMP

TIMESTAMP , с другой стороны, представляет собой четырехбайтовый тип данных, который может хранить более ограниченный диапазон данных, начиная с 19 года.70 по 2038-01-19. Это ограничение называется «проблемой 2038 года». Если вам нужно хранить данные о времени только в пределах этого диапазона, TIMESTAMP является более компактным и эффективным вариантом.

YEAR

Если вам нужно сохранить год между 1901 и 2155, YEAR будет самым компактным способом сделать это. Этот тип не очень часто используется.

ВРЕМЯ

Тип данных ВРЕМЯ используется для хранения часов, минут и секунд. Он может хранить более 24 часов, что полезно для хранения интервалов. Этот тип полезен для 10-дневного диапазона, выраженного в часах, минутах и ​​секундах, но обычно он не используется.

Если вам нужно сохранить дату и время, вам нужно выбрать между DATETIME и TIMESTAMP . Оба типа данных имеют свои преимущества и недостатки, поэтому важно понимать различия между ними.

Размер хранилища

Первое различие между DATETIME и TIMESTAMP — это размер хранилища. DATETIME — это восьмибайтовый тип данных, а TIMESTAMP — четырехбайтовый тип данных. Это составляет TIMESTAMP компактнее и эффективнее с точки зрения места для хранения.

Диапазон данных

Второе различие между этими двумя типами данных заключается в диапазоне данных, которые они могут хранить. Как упоминалось ранее, DATETIME может хранить данные о времени до 9999 года. В отличие от этого, TIMESTAMP может хранить данные только с 1970 по 2038 год.

Из-за этого ограничения вам, возможно, придется использовать DATETIME в тех случаях, когда вам нужно хранить данные после 2038 года.

Часовые пояса

Последнее различие между DATETIME и TIMESTAMP заключается в том, как они обрабатывают часовые пояса. С DATETIME MySQL вообще не обрабатывает часовые пояса. Что бы вы ни вложили, вы получите обратно. С TIMESTAMP MySQL пытается помочь вам, преобразовывая значения в UTC при добавлении в базу данных и обратно в ваш часовой пояс при извлечении.

Эту разницу необходимо учитывать при выборе между этими двумя типами данных, особенно если ваше приложение требует обработки разных часовых поясов.

Когда дело доходит до хранения данных, связанных со временем, в MySQL, очень важно выбрать правильный тип данных в соответствии с вашими потребностями.