Я должен сохранять даты и время в разных таблицах типичного транзакционного приложения, где я собираюсь хранить различную информацию, такую как:
- Даты и время каждой транзакции (счет-фактура, платежная квитанция и т. д.)
- Даты и время будущих событий, таких как встречи и запланированные доставки
- Прошлые даты, такие как дата рождения сотрудника или детей сотрудника.
У меня мало опыта работы с MySQL, и я не уверен, какой тип данных выбрать в каждом случае.
Что рекомендуется, использовать поле типа DateTime или типа TimeStamp и почему?
В какой-то момент в этой документации MySQL говорится примерно так: http://dev.mysql.com/doc/refman/5.7/en/datetime.html (ссылка на английском языке)
Исходя из вышеизложенного и принимая это во внимание, возможно, что диапазон данных, которые вы могли бы хранить или интересовать, может склонить вас в пользу того или другого, например, если вы работаете с ипотечными кредитами, мягко говоря, Вам легко преодолеть полигон
TIMESTAMP
сегодня.TIMESTAMP
зависит от настроек/настроек часового пояса. ПокаDATETIME
постоянно.TIMESTAMP
составляет четыре байта иDATETIME
восемь байтов, поэтому метки времени (TIMESTAMP
) также легче в базе данных с более быстрой индексацией.Учитывая все вышесказанное, если вы хотите сохранить определенное значение, «может быть, лучше» использовать
DATATIME
, но если вы просто хотите сохранить, чтобы отслеживать возможные изменения записи, вы можете использоватьTIMESTAMP
ее при изменении записи.Если вы работаете над
MySQL 5
или выше, значенияTIMESTAMP
преобразуются из текущего часового пояса в UTCalmacenamiento
дляrecuperación
. только для типа данных TIMESTAMP.(ВНИМАНИЕ, если я найду ссылку выше, я постараюсь разместить ее здесь)
Я надеюсь, что это поможет вам.
Это зависит от ваших требований, для каждого случая есть определенные соображения, например диапазон значений, которые может поддерживать каждый.
дополнительная информация: типы DATE, DATETIME и TIMESTAMP.
Другие свойства, которые, возможно, очевидны для многих из нас, — это автоматическая инициализация и обновление до текущей даты и времени. Значения TIMESTAMP с нулевым значением по умолчанию не разрешены в MySQL.
Я вижу смысл использовать
TimeStamp
его только тогда, когда вы хотите убедиться, что дата устанавливается автоматически при вставке или обновлении записи.Например, если вы хотите сохранить дату и время события, вы определяете это следующим образом:
Обратите внимание, что во INSERT вы не включаете поле
FechaHora
.Другой пример с ОБНОВЛЕНИЕМ: